본문 바로가기

architecture4

observer design pattern example 위 그림에서 MyTextView->draw() 와 MyGraphView->draw() 를 사용하고 MyIntDocument->getData()를 사용해야 하는 경우 상호간 양방향 참조를 하고 있습니다. 이를 개선하기 위해서 아래와 같이 변경하면 MyTextView와 MyGraphView에서 MyDocument로만 의존성이 있게 됩니다. MyIntDocument에서 MyTextView로의 의존성은 Observable에서 Observer 인터페이스 방향으로 추상화 되었습니다. 위 그림에서 각 구현체 객체들의 일관된 인터페이스로 통신하는 것이 더 좋을 것 같습니다. 의존성 역전(DIP)의 SOLID 원칙을 추가해서 구현해 보면 아래와 같이 MyDocument와 MyView의 인터페이스를 라이브러이 안에 가두어.. 2022. 11. 29.
composite design pattern example 각 다형성의 요소들을 그룹으로 묶어서 같이 관리하고자 할 때 사용할 수 있습니다. 위와 같은 상태에서 FigureGroup도 Rectangle과 Line을 다루는 인터페이스로 같이 사용하기 위해서는 아래와 같이 FigureGroup이 Figure class를 상속하게 해줍니다. 여기서 FigureGroup과 같은 컬랙션을 다시 상속하여 구현할 수 있는데 아래와 같은 다른 예시가 있습니다. Array와 List 방식의 각 Collection으로 Object*를 저장하는 위와 같은 구현이 있을 때 Array와 List도 Collection을 통해 아래와 같이 Object*를 상속하게 만들어서 List에 다시 List를 저장하여 관리하는 기능을 확장할 수 있습니다. 2022. 11. 29.
[My cheat-sheet] PUML 참고 : http://www.plantuml.com/plantuml/uml usecase @startuml usecase_diagram title AM3352 IG Use Cases left to right direction actor LSM #blue package Init { usecase "Init IG FPGA" as Init_UC1 } package SwUpdate { usecase "Self Update" as SwUpdate_UC1 usecase "Forward\n FPGA binary" as SwUpdate_UC2 } LSM --> SwUpdate_UC1 LSM --> SwUpdate_UC2 @enduml class @startuml skinparam classAttributeIconSiz.. 2021. 9. 29.
[My cheat-sheet] Design Patterns 디자인 패턴의 주요 관점:1) 동일 코드 및 유사 코드까지 통합하려고 객체 지향의 다형성을 이용하여 코드 중복을 제거 하고2) 객체 지향의 추상화 인터페이스 레벨을 맞추어 기존 코드를 수정하지 않고 새로운 코드를 추가하여 사용하도록 구성하는 방법 디자인 패턴의 첫번째 목적은 유지보수성(변경용이성), 두번째는 재사용(기존 패턴 방식의): 모양과 구성 방법이 같더라도 사용 목적에 따라 다르게 취급함. 예) Proxy pattern Decorator Pattern 생성구조행동class 상속Factory MethodAdapterInterpreterTemplate Method객체 동적 변경Abstract FactoryBuilderPrototypeSingletonAdapterBridgeCompositeDecora.. 2021. 7. 3.