객체 간 응집도 ☝, 결합도는 👇
요구 사항 변경 시, 코드 변경 최소화
SOLID 원칙
1) SRP (Single Responsiblity Principle, 단일 책임 원칙)
클래스나, 함수는 단 하나의 기능만을 가져야 한다.
2) OCP (Open-Closed Principle, 개방-폐쇄 원칙)
기존 코드 변경에는 닫혀있고, 추가나 확장에는 열려있어야 한다.
3) LSP (Liskov Substitution Principle, 리스코프 치환 원칙)
자식 클래스는 부모 클래스에서 가능한 행위를 수행할 수 있어야 한다.
4) DIP (Dependency Inversion Principle, 의존 역전 원칙)
의존 관계를 맺을 때, 변화하기 쉬운 것 보단 변화하기 어려운 것에 의존한다.
{인터페이스 or 추상클래스} {변수 명} = {서브 클래스 인스턴스}
의존성 주입 (Dependency Injection) 기술
5) ISP (Interface Segregation Principle, 인터페이스 분리 원칙)
클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다.
Design pattern
생성 패턴 (Creational patterns) | 구조 패턴 (Structural patterns) | 행동 패턴 (Behavioral patterns) |
---|---|---|
싱글톤 (Singleton) | 어댑터 (Adapter) | 스트레티지 (Strategy) |
팩토리 메서드 (Factory Methods) | 브리지 (Bridge) | 템플릿 메쏘드 (Template Meothods) |
추상 팩토리 메서드 (Abstract Factory Methods) | 컴퍼지트 (Composite) | 옵저버 (Observer) |
빌더 (Builder) | 데코레이터 (Decorator) | 스테이트 (State) |
프로토타입 (Prototype) | 퍼사드 (Facade) | 비지터 (Visitor) |
플라이웨이트 (Flyweight) | 커맨드 (Command) | |
프록시 (Proxy) | 인터프리터 (Interpreter) | |
이터레이터 (Iterator) | ||
미디에이터 (Mediator) | ||
메멘토 (Memento) | ||
책임 연쇄 (Chain of Responsibility) |