4. 객체지향 디자인 원칙 (Solid)
• S - SRP(Single responsibility principle) 단일 책임 원칙
• O - OCP(Open Closed Principle) 개방 - 폐쇄 원칙
• L - LSP(Liskov Substitusion Principle) 리스코프 치환 법칙
• I - ISP(Interface Segregation Principle) 인터페이스 분리 원
칙
• D - DIP(Dependency Inversion Principle) 의존성 역전 법칙
5. 객체지향 디자인 원칙 (Solid)
• S - SRP(Single responsibility principle) 단일 책임 원칙
• 객체에 단 하나의 책임만을 가져야한다.
• 객체에 많은 기능과 책임을 정의하면 변경 시 많은 부분
을
변경할 수도 있고, 의도치 않은 곳에 오류가 생기기 쉽다.
• 응집도가 높은 클래스를 만들어야한다.
6. 객체지향 디자인 원칙 (Solid)
• O - OCP(Open Closed Principle) 개방 - 폐쇄 원칙
• 기존의 코드를 변경하지 않으면서 기능을 추가 할 수 있
도록
설계 되어야한다.
• 모듈은 추상화 된 클래스의 의존하여, 가능한 동작을 수
행하게
설계 해야함.
7. 객체지향 디자인 원칙 (Solid)
• L - LSP(Liskov Substitusion Principle) 리스코프 치환 법칙
• 파생 클래스는 부모 클래스의 가능한 행위는 수행할 수
있어야
한다.
• 부모 클래스에 의해 파생 클래스의 행동이 추상화 되어,
소스코드에 존재할텐데 추상화 된 내용을 수행을 못 하
면
부모 클래스에서 상속 받는 메소드들이 잘못 설계가 되
어진것
8. 객체지향 디자인 원칙 (Solid)
• I - ISP(Interface Segregation Principle) 인터페이스 분리 원
칙
• 클라이언트 자신이 이용하지 않는 기능에는 영향을 받지
않아야
한다.
• 큰 덩어리의 인터페이스가 아닌 작은 인터페이스로 분리
하여
의존성을 약화 시켜 유연한 구조로 설계한다.
9. 객체지향 디자인 원칙 (Solid)
• D - DIP(Dependency Inversion Principle) 의존성 역전 법칙
• 변화가 없는 것에 의존 하라. 고수준 요소가 저수준 요소
의
추상 클래스에 의존하게 설계 해야함.
• 고수준 요소가 저수준의 구상 클래스에 의존하게 되면
고수준 요소가 저수준의 요소에 의존하게 된다.
• 의존성 역전은 전통적 방식에 하이레벨에서 로우레벨을
의존하는 방식을 역전 시켜 설계하는 것을 지향.
10. 디자인 패턴 소스코드
• 해당 디자인 패턴 소스코드는 Git에 업로드 했습니다.
https://github.com/PAndy92/StudyOfProgramming
• Java -> C#으로 작성한 코드입니다.
• 문의는 [email protected] 이나 코멘트
달아주시면 감사하겠습니다.
31. 4. Factory Method Pattern
팩토리 메소드 패턴에서는 객체를 생성하기 위한 인터페이스를 정의하는데,
어떤 클래스의 인스턴스를 만들어지는 서브클래스에서 결정하게 만듭니다.
팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡김.
32. 4. Factory Method Pattern
피자 타이쿤 게임을 만들어 봅시다.
가게 마다 제조할 수 있는 피자는
달라질 수 있어요.
33. 4. Factory Method Pattern
피자의 종류는
계속 추가, 변경 될 수
있습니다.
피자
치즈
피자
불고기
피자
야채
피자
34. 4. Factory Method Pattern
피자 가게 종류 마다
다른 피자 조제법이 필요합니다.
A피자
치즈
피자
불고기
피자
야채
피자
B피자
소시지
피자
고구마
피자
치킨
피자
42. 7. Templete Method Pattern
메소드에서 알고리즘의 골격을 정의합니다.
알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있습니다.
템플릿 메소드를 이용하면 알고리즘의 구조를 그대로 유지하며
서브클래스에서 특정 단계를 재정의 할 수 있습니다.