객체지향 5

템플릿 메소드(Template Method) 패턴 실제 적용 사례 - 디자인 패턴

개요본 문서는 본인의 개발향상과 기억의 장기화를 위해 기록해두기 위해 사용한 문서로 존칭은 생략하기로 한다.FX 개발도중 사용자마다 원가 + 마진 + 마크업이란 수수료가 붙는 로직이 있는데 템플릿 메소드 패턴을 사용하여 구현하였다.템플릿 메소드 패턴을 설명하기 위해 세부 코드는 생략하였고 큰 틀에서 설명하기로 한다.아래는 공식인데 약식으로 설명한다.- 일반환율(USDKRW 비롯한 KRW 없는것 즉 USDJPY, EURUSD 등)- 재정환율(USDKRW 제외한 ~/KRW 있는것 즉 JPYKRW EURKRW 등): 일반환율 .바로환전 bid=원가 + 원천마크업 + 바로환전마진 ask=원가 + 원천마크업 + 바로환전마진 .현물환 bid=원가 + 원천마크업 + 마크업 + 스왑 + 마진..

객체지향 2024.08.23

[ES6] 템플릿 메소드 패턴 예제

상속을 이용한 템플릿 메소드 패턴 예제 다형성을 이용하여 load() 메소드 호출시 각각 자식의 _load() 메소드가 호출된다. 다형성 = 내적일관성 + 대체가능성 // 공통 부분 const Order = class { #id; #name; constructor(name) { this.#name = name; } getName() { return this.#name; } load() { const content = "[공통] 부모 > 자식변수 [content]"; this._load(content); // 위임 부분 } _load(v) { throw "override"; } // HOOK } const ord1 = class extends Order { constructor() { super("자식 >..

객체지향 2022.05.09

[헤드퍼스트 디자인패턴] 1. 전략패턴

헤드퍼스트 디자인 패턴의 첫번째 디자인 패턴을 분석해본다. 본 문서는 본인의 개발향상과 기억의 장기화를 위해 기록해둔다. 또한 왜 이렇게 해야 되는지를 레거시 코드를 통해 알아보도록 하겠다. 아래와 같이 청둥오리/고무오리/나무오리 가 존재한다. 각각의 오리는 아래와 같은 상황이다. package Duck; public class Legacy_Duck { public Legacy_Duck(String duck) { if(duck == "청둥오리") { display("저는 청둥오리"); quack("꽥꽥"); fly("날다"); } else if(duck == "고무오리") { display("저는 고무오리"); quack("삑삑"); fly("날지 못한다. XX"); } else if(duck == "나..

객체지향 2022.03.29

객체지향 디자인 패턴 공부 순서

객체지향 디자인 패턴 공부 순서 템플릿 메소드 패턴 : 상속중에 좋은 상속. 상속은 나쁘지만 템플릿 메소드 패턴 사용하면 좋다. 전략패턴 : 하지만 상속은 조합폭팔이 일어나기 때문에 상속은 합성으로 바꿔야 한다. 그래서 전략패턴을 배운다. 전략객체를 많이 만들다 보면 포괄적인 객체 / 단일객체가 나오는데 포괄객체과 단일객체를 합성할수 있는는 컴포지트 패턴을 배운다. 컴포지트 패턴 : 엘리먼트간의 링크드리스트로 연결해주고 싶은때엔 데코레이터 패턴 을 사용한다. 데코레이터 패턴 : 한번에 가는 패턴이다. 중간에 멈출수가 없다. 체인오브리스펀스플 패턴을 비운다. 비지트 패턴 : 컴포지트 옆에서 배운다. 코멘트 패턴 : 끝판왕 .

객체지향 2020.08.31

OOP Interface 를 왜 사용하는가 ?

본내용은 코드스피츠 강좌를 이용하여 만든점을 참고드립니다. 자세한 내용은 아래 동영상을 참조하세요 https://www.youtube.com/watch?v=sWyZUzQW3IM&list=PLBNdLLaRx_rI-UsVIGeWX_iv-e8cxpLxS&index=1 객체지향을 하다보면 Interface 를 사용하게 자주 보입니다. 그렇다면 왜 Interface 를 사용한지 고찰해보록 합시다. 여기 가상의 메모리 테이블이 있습니다. 여기에 A 라는 변수에 TEST 라는 값을 넣어보도록 하죠 A 의 주소는 11번을 가르키고 있습니다. B 라는 변수에 A 의 주소값을 입력합니다. B(26주소) 의 값에는 11번인 A 의 주소값이 입력됩니다. *B = "TEST" B 의 주소가 가르키는 값은 찾아보면 "TEST" ..

객체지향 2020.07.27