Programming Languange/디자인 패턴

디자인 패턴 (Design Patterns) - Index

타자치는 문돌이

Index

생성 패턴

Prototype Pattern
Singleton Pattern

구조 패턴

Adapter Pattern
Decorator Pattern
Facade Pattern

행동 패턴

Command Pattern
Observer Pattern
State Pattern
Strategy Pattern
Visitor Pattern

최적화 패턴

Object Pool


프로그래밍 방식은 절차 지향에서 객체 지향으로 변화했다. 그러나 객체 지향적인 코드를 짜기가 쉬운 것은 아니다.
객체 지향 프로그래밍은 다섯 가지 원칙(SOLID)을 지켜야 한다.

단일 책임 원칙 (Single Responsibility Principle, SRP)
객체는 오직 하나의 책임을 져야 한다.

개방-폐쇄 원칙 (Open-Closed Principle, OCP)
객체는 확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 한다.

리스코프 치환 원칙 (Liskov Substitution Principle, LSP)
자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 한다.

인터페이스 분리 원칙 (Interface Segregation Principle, ISP)
클라이언트에서 사용하지 않는 메서드는 사용해서는 안된다.

의존성 역전 원칙 (Dependency Inversion Principle, DIP)
추상성이 높고 안정적인 고수준의 클래스는 구체적이고 불안정한 저수준의 클래스에 의존해서는 안 된다.

객체 지향 프로그래밍의 장점은 재사용과 확장이 쉽고, 신뢰성이 높다는 것이다. 다른 말로 우리가 짠 객체 지향 코드도 재사용성과 확장성, 신뢰성을 고려해야 한다.

더욱 쉽게 객체 지향적인 코드를 짜는 방법으로, GoF의 디자인 패턴(1995) 은 잘 작성된 해결책을 재사용하는 방식을 제안한다. 비슷한 문제와 비슷한 해결책이 반복되므로, 적절한 해결책을 패턴화하여 사용할 수 있도록 디자인 패턴이라는 이름으로 정리하였다. 디자인 패턴이 모든 문제를 해결하는 만능 방법은 당연히 아니고, 모든 상황에서 사용해야 하는 것도 아니지만 적절히 사용하면 도움이 되고. 다른 사람이 쓴 코드는 알아봐야 하므로 알아보자.


클래스 다이어그램

디자인 패턴의 대략적인 구현 구조를 클래스 다이어그램으로 표현한다.


이것은 클래스와 매소드이다.


클래스를 상속받는 경우 삼각형을 통해 표시한다.


일반 화살표는 참조를 가지고 있다는 의미이다.


부분이나 집합 관계인 객체를 참조하는 경우 마름모로 나타내고 이름을 적는다.
ex) Books 배열과 Book의 관계


이것은 주석이다. 코드가 어떻게 구현되는지 간략하게 적는다.