This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| design_pattern:design_pattern [2017/10/31 03:09] – [기초 용어] ledyx | design_pattern:design_pattern [2021/02/07 03:24] (current) – [Design Pattern] ledyx | ||
|---|---|---|---|
| Line 4: | Line 4: | ||
| https:// | https:// | ||
| - | {{tag> | + | {{tag> |
| = 기초 용어 = | = 기초 용어 = | ||
| Line 10: | Line 10: | ||
| [[: | [[: | ||
| - | * 상속(Inherit)와 위임(Delegate) | + | * 상속(Inherit)와 위임(Delegation) |
| + | * 상속은 Tight coupling, 위임은 Loose coupling. | ||
| * 클래스 관계를 동적으로 바꾸 싶을때, 느슨한 연결(Loose Coupling)을 할 때는 위임. 그 반대의 경우 상속. | * 클래스 관계를 동적으로 바꾸 싶을때, 느슨한 연결(Loose Coupling)을 할 때는 위임. 그 반대의 경우 상속. | ||
| * 투과적 인터페이스(API) | * 투과적 인터페이스(API) | ||
| - | * 연쇄적인 상속으로 하위 클래스들에게 API(Method)들이 감추어지지 않고 보이는 것. | + | * 연쇄적인 상속으로 하위 클래스들에게 API(Method)들이 감추어지지 않고 보이는 것. 상속/ |
| + | * [[Adapter Pattern]] | ||
| * [[Decorator Pattern]] | * [[Decorator Pattern]] | ||
| + | * [[Proxy Pattern]] | ||
| + | |||
| + | * Double Dispatch | ||
| + | * 서로 상호적으로 한쌍을 이루어 Method Logic(Algorithm, | ||
| + | * [[Visitor Pattern]] | ||
| Line 24: | Line 31: | ||
| ^ GoF에 따른 분류 | ^ GoF에 따른 분류 | ||
| - | | <hi yellow> | + | | <bg yellow> |
| == 기초 == | == 기초 == | ||
| - | * <hi pink> | + | * <bg pink> |
| - | * <hi cyan> | + | * <bg cyan> |
| == 하위 클래스에게 위임 == | == 하위 클래스에게 위임 == | ||
| 상속과 관련된 디자인 패턴 | 상속과 관련된 디자인 패턴 | ||
| - | * <hi pink> | + | * <bg pink> |
| - | * <hi yellow> | + | * <bg yellow> |
| == 인스턴스 생성 == | == 인스턴스 생성 == | ||
| - | * <hi yellow> | + | * <bg yellow> |
| - | * <hi yellow> | + | * <bg yellow> |
| - | * <hi yellow> | + | * <bg yellow> |
| - | * <hi yellow> | + | * <bg yellow> |
| Line 47: | Line 54: | ||
| 복잡하게 뒤섞이기 쉬운 프로그램을 분리해서 생각 | 복잡하게 뒤섞이기 쉬운 프로그램을 분리해서 생각 | ||
| - | * <hi cyan> | + | * <bg cyan> |
| - | * <hi pink> | + | * <bg pink> |
| Line 54: | Line 61: | ||
| 언뜻 보기에 서로 다른 것을 **통일적으로 조작**할 수 있도록 하거나, **취급 방법을 바꾸지 않고** 기능을 추가하는 패턴과 **<fc red> | 언뜻 보기에 서로 다른 것을 **통일적으로 조작**할 수 있도록 하거나, **취급 방법을 바꾸지 않고** 기능을 추가하는 패턴과 **<fc red> | ||
| - | * <hi cyan> | + | * <bg cyan> |
| - | * <hi cyan> | + | * <bg cyan> |
| == 구조를 돌아다니기 == | == 구조를 돌아다니기 == | ||
| - | * <hi pink> | + | * <bg pink> |
| - | * <hi pink> | + | * <bg pink> |
| == 단순화 == | == 단순화 == | ||
| 클래스들이 복잡한 관계에 있을 때, 단순하게 만들기 | 클래스들이 복잡한 관계에 있을 때, 단순하게 만들기 | ||
| - | * <hi cyan> | + | * <bg cyan> |
| - | * <hi pink> | + | * <bg pink> |
| == 상태 관리 == | == 상태 관리 == | ||
| - | * <hi pink> | + | * <bg pink> |
| - | * <hi pink> | + | * <bg pink> |
| - | * <hi pink> | + | * <bg pink> |
| == 낭비 없애기 == | == 낭비 없애기 == | ||
| - | * <hi cyan> | + | * <bg cyan> |
| - | * <hi cyan> | + | * <bg cyan> |
| == 클래스로 표현 == | == 클래스로 표현 == | ||
| 명령, 문법규칙과 같은 이외의 것을 클래스로 표현 | 명령, 문법규칙과 같은 이외의 것을 클래스로 표현 | ||
| - | * <hi pink> | + | * <bg pink> |
| - | * <hi pink> | + | * <bg pink> |