* Design Principles
Open Close Principle
의존성 뒤집기 원칙(Dependency Inversion Principle)
어떤 변수에도 구상 클래스에 대한 레퍼런스를 저장하지 말고, 구상 클래스에 유도된 클래스를 만들지 말며, 베이스 클래스에 이미 구현되어 있던 메소드를 오버라이드하지 말아야 한다
Interface Segregation Principle
Single Responsibility Principle
Liskov's Substitution Principle
인터페이스 상속의 목적은 동적 다형성
템플릿은 정적 다형성
코드 재사용을 위해서는 구현
상속 보다는 합성(composition?)을 사용하자. // ???
중복(?) 상속의 위험성이 없는 한 다중 상속은 전혀 거리낄 것이 없다. // ???
다형성을 위한 목적이 아니라 구현 상속 시에도 다중 상속이 좋다.
퍼사드 패턴(façade pattern)
에이전트 객체(façade)
복잡한 클래스들과 패키지들(서브 시스템)을 어떤 단순한 인터페이스 객체 뒤에 감춘다.
어댑터 패턴
wrapper
특정 인터페이스를 준수
참조 사이트: