3. Design Pattern
• 정의: 일반적인 설계문제를 해결하기 위하여 짜여진 상호 협력하는 객체들과 클
래스들에 대한 기술
• 사용 이유: 설계에 관한 의사소통
• 기대 효과
• 융통성 있는 설계의 재사용
• 코드를 일반화
• 다른 클래스에 의존하는 것을 최소화
• 모듈화 된 설계
• 신뢰성 있는 부품을 재사용
4. 설계의 품질
• 나쁜 설계의 냄새
• 경직성
• 부서지기 쉬움
• 부동성
• 끈끈함
• 쓸데 없이 복잡함
• 필요 없는 반복
• 불투명성
• 스파게티 코드
5. 객체지향설계 5대 원칙
• Single Responsibility Principle
• 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐 이어야 한다.
• Open-Closed Principle
• Interface에 대해서는 개방되어야 하지만, 변경에 대해서는 폐쇄되어야 한다.
• Liskov Substitution Principle
• 서브타입(Sub Type)은 언제나 자신의 기반 타입(Base Type)으로 교체할 수 있어야 한다.
• Interface Segregation Principle
• 클라이언트는 자신이 사용하지 않는 메서드는 의존 관계를 맺으면 안된다.
• Dependency Inversion Principle
• 고차원의 모듈은 저차원의 모듈에 의존하면 안된다.