Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
design_pattern:design_pattern [2017/10/29 06:48] – [기초 용어] ledyxdesign_pattern:design_pattern [2021/02/07 03:24] (current) – [Design Pattern] ledyx
Line 4: Line 4:
 https://en.wikipedia.org/wiki/Design_Patterns#Patterns_by_Type https://en.wikipedia.org/wiki/Design_Patterns#Patterns_by_Type
  
-{{tag>Architecture Modeling DesignPattern}}+{{tag>Architecture Modeling Design_Pattern}}
  
 = 기초 용어 = = 기초 용어 =
 +[[https://ko.wikipedia.org/wiki/SOLID|SOLID : 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙]]
 [[:unified_modeling_language]] [[:unified_modeling_language]]
  
-  * 상속(Inherit)와 위임(Delegate)+  * 상속(Inherit)와 위임(Delegation) 
 +    * 상속은 Tight coupling, 위임은 Loose coupling.
     * 클래스 관계를 동적으로 바꾸 싶을때, 느슨한 연결(Loose Coupling)을 할 때는 위임. 그 반대의 경우 상속.     * 클래스 관계를 동적으로 바꾸 싶을때, 느슨한 연결(Loose Coupling)을 할 때는 위임. 그 반대의 경우 상속.
 +
 +
 +  * 투과적 인터페이스(API)
 +    * 연쇄적인 상속으로 하위 클래스들에게 API(Method)들이 감추어지지 않고 보이는 것. 상속/구현을 통해 투영/투과.
 +    * [[Adapter Pattern]]
 +    * [[Decorator Pattern]]
 +    * [[Proxy Pattern]]
 +
 +
 +  * Double Dispatch
 +    * 서로 상호적으로 한쌍을 이루어 Method Logic(Algorithm, Message)을 처리하는 관계
 +    * [[Visitor Pattern]]
 +
  
 = 분류 = = 분류 =
Line 16: Line 31:
  
 ^  GoF에 따른 분류  ^^^ ^  GoF에 따른 분류  ^^^
-|  <hi yellow>Creational</hi>  |  <hi cyan>Structional</hi>  |  <hi pink>Behavioral</hi>  |+|  <bg yellow>Creational</bg>  |  <bg cyan>Structural</bg>  |  <bg pink>Behavioral</bg>  |
  
  
 == 기초 == == 기초 ==
-  * <hi pink>[[design pattern:Iterator pattern|Iterator]]</hi+  * <bg pink>[[design pattern:Iterator pattern|Iterator]]</bg
-  * <hi cyan>[[design pattern:Adapter pattern|Adapter]]</hi>+  * <bg cyan>[[design pattern:Adapter pattern|Adapter]]</bg>
  
 == 하위 클래스에게 위임 == == 하위 클래스에게 위임 ==
 상속과 관련된 디자인 패턴 상속과 관련된 디자인 패턴
  
-  * <hi pink>[[design pattern:Template method pattern|Template method]]</hi+  * <bg pink>[[design pattern:Template method pattern|Template method]]</bg
-  * <hi yellow>[[design pattern:Factory method pattern|Factory method]]</hi>+  * <bg yellow>[[design pattern:Factory method pattern|Factory method]]</bg>
  
 == 인스턴스 생성 == == 인스턴스 생성 ==
-  * <hi yellow>[[design pattern:Singleton pattern|Singleton]]</hi+  * <bg yellow>[[design pattern:Singleton pattern|Singleton]]</bg
-  * <hi yellow>[[design pattern:Prototype pattern|Prototype]]</hi+  * <bg yellow>[[design pattern:Prototype pattern|Prototype]]</bg
-  * <hi yellow>[[design pattern:Builder pattern|Builder]]</hi+  * <bg yellow>[[design pattern:Builder pattern|Builder]]</bg
-  * <hi yellow>[[design pattern:Abstract factory pattern|Abstract factory]]</hi>+  * <bg yellow>[[design pattern:Abstract factory pattern|Abstract factory]]</bg>
  
  
Line 39: Line 54:
 복잡하게 뒤섞이기 쉬운 프로그램을 분리해서 생각 복잡하게 뒤섞이기 쉬운 프로그램을 분리해서 생각
  
-  * <hi cyan>[[design pattern:Bridge pattern|Bridge]]</hi+  * <bg cyan>[[design pattern:Bridge pattern|Bridge]]</bg
-  * <hi pink>[[design pattern:Strategy pattern|Strategy]]</hi>+  * <bg pink>[[design pattern:Strategy pattern|Strategy]]</bg>
  
  
-== 동일하기 == +== 동일한 것으로 간주하기 == 
-언뜻 보기에 서로 다른 것을 **통일적으로 조작**할 수 있도록 하거나, **취급 방법을 바꾸지 않고*** 기능을 추가하는 패턴과 **<fc red>위임</fc>**에 대한 내용+언뜻 보기에 서로 다른 것을 **통일적으로 조작**할 수 있도록 하거나, **취급 방법을 바꾸지 않고** 기능을 추가하는 패턴과 **<fc red>위임</fc>**에 대한 내용
  
-  * <hi cyan>[[design pattern:Composite pattern|Composite]]</hi+  * <bg cyan>[[design pattern:Composite pattern|Composite]]</bg
-  * <hi cyan>[[design pattern:Decorator pattern|Decorator]]</hi>+  * <bg cyan>[[design pattern:Decorator pattern|Decorator]]</bg>
  
  
 == 구조를 돌아다니기 == == 구조를 돌아다니기 ==
-  * <hi pink>[[design pattern:Visitor pattern|Visitor]]</hi+  * <bg pink>[[design pattern:Visitor pattern|Visitor]]</bg
-  * <hi pink>[[design pattern:Chain of responsibility pattern|Chain of responsibility]]</hi>+  * <bg pink>[[design pattern:Chain of responsibility pattern|Chain of responsibility]]</bg>
  
 == 단순화 == == 단순화 ==
 클래스들이 복잡한 관계에 있을 때, 단순하게 만들기 클래스들이 복잡한 관계에 있을 때, 단순하게 만들기
  
-  * <hi cyan>[[design pattern:Facade pattern|Facade]]</hi+  * <bg cyan>[[design pattern:Facade pattern|Facade]]</bg
-  * <hi pink>[[design pattern:Mediator pattern|Mediator]]</hi>+  * <bg pink>[[design pattern:Mediator pattern|Mediator]]</bg>
  
 == 상태 관리 == == 상태 관리 ==
-  * <hi pink>[[design pattern:Observer pattern|Observer]]</hi+  * <bg pink>[[design pattern:Observer pattern|Observer]]</bg
-  * <hi pink>[[design pattern:Memento pattern|Memento]]</hi+  * <bg pink>[[design pattern:Memento pattern|Memento]]</bg
-  * <hi pink>[[design pattern:State pattern|State]]</hi>+  * <bg pink>[[design pattern:State pattern|State]]</bg>
  
 == 낭비 없애기 == == 낭비 없애기 ==
-  * <hi cyan>[[design pattern:Flyweight pattern|Flyweight]]</hi+  * <bg cyan>[[design pattern:Flyweight pattern|Flyweight]]</bg
-  * <hi cyan>[[design pattern:Proxy pattern|Proxy]]</hi>+  * <bg cyan>[[design pattern:Proxy pattern|Proxy]]</bg>
  
 == 클래스로 표현 == == 클래스로 표현 ==
 명령, 문법규칙과 같은 이외의 것을 클래스로 표현 명령, 문법규칙과 같은 이외의 것을 클래스로 표현
  
-  * <hi pink>[[design pattern:Command pattern|Command]]</hi+  * <bg pink>[[design pattern:Command pattern|Command]]</bg
-  * <hi pink>[[design pattern:Interpreter pattern|Interpreter]]</hi>+  * <bg pink>[[design pattern:Interpreter pattern|Interpreter]]</bg>
design_pattern/design_pattern.1509259720.txt.gz · Last modified: (external edit)