본문 바로가기
Template method pattern, 템플릿 메소드 패턴 Template method pattern 정의 템플릿 메소드 패턴은 알고리즘의 골격을 정의하고 알고리즘의 일부 단계를 서브클래스에서 구현함으로써, 알고리즘의 구조는 그대로 유지하면서 여러곳에서 다른형태로 사용이 필요한 경우 유용하게 사용할수 있다. 전체적인 레이아웃을 통일하지만 상속받은 클래스는 훅 메소드를 이용하여 확장할 수 있도록 유연성을 주는 디자인 패턴 상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법. 변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에서 만들도록 한다. 예제 1. 추상클래스 protocol Ramen { func makeRamen() // template method func boilWater() func putNoodle.. 2022. 5. 16.
Abstract Factory Pattern, 추상 팩토리 패턴 Abstract Factory Pattern ? 객체를 생성하려면 해당 객체를 구체적으로 정의한 코드에 대해 소스 코드 의존성이 발생 ! 구체적인 클래스에 의존하지 않고, 서로 연관되거나 의존적인 객체들의 조합을 생성하는 인터페이스를 제공하는 패턴 상세화된 서브클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 "군"을 생성하기 위한 인터페이스를 제공합니다. Application - Abstract Factory Pattern AbstractFactory : 실제 팩토리 클래스의 공통 인터페이스 ConcreteFactoryImpl : 구체적인 팩토리 클래스로 AbstractFactory 클래스의 추상 메서드를 오버라이드함으로써 구체적인 제품을 생성한다. AbstractProduct : 제.. 2022. 5. 11.
Factory Method Pattern, 팩토리 메소드 패턴 Factory ? - 객체 생성 부분을 전담하는 클래스 Factory 장점 - 클래스를 생성하는 작업을 팩토리에 캡슐화시켜 놓았기 때문에, 수정 사항이 있을 때 factory class만 수정하면 된다 - 클래스를 생산하는 부분과 사용하는 부분을 분리하여 느슨하게 결합 -> 유연성과 확장성 Factory Method Pattern ? - 객체 생성만을 처리하는 메소드를 인터페이스로 선언하고 서브클래스에서 이것(팩토리)을 구현하여, 어떤 객체를 생성할지는 서브클래스에서 결정하도록하는 방식 Factory Method Pattern 장점 - 객체를 생성하는 부분을 서브 클래스에서 직접 구현하므로, 생성하는 객체를 서브클래스에서 마음대로 변경할 수 있다 -> 큰 유연성 제공 - 클래스를 생산하는 부분과 사용하는.. 2022. 5. 9.
Facade Pattern 파사드 패턴이란? 서브시스템에 있는 인터페이스 집합에 대해 하나의 통합된 인터페이스(Wrapper)로 제공하는 것 파사드 패턴 장점 장점1. 사용이 간편하다. 클라이언트 입장에서는 각 서브 시스템들을 하나하나 호출할 필요가 없이 인터페이스 메서드 하나만 호출하면 된다. 장점2. 유연성이 좋다. 클라이언트와 서브시스템이 서로 긴밀하게 연결되어 있지 않기 때문에 서브시스템에 변화가 있을 때 클라이언트에 영향이 가지 않는다. 참고자료 https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS8616098823&cate_cd= https://flower0.tistory.com/432 2022. 5. 4.
Strategy Pattern Strategy Pattern 이란? Strategy Pattern (전략 패턴)은 교환 가능한 객체들을 정의해두고 Strategy protocol을 이용하여 런타임에 설정하거나 변환하는 패턴 Object using a Strategy : Strategy protocol을 이용하는 객체 Strategy protocol : 모든 strategy가 반드시 구현해야 할 메서드들을 정의하고 있는 프로토콜 Strategies : Strategy 프로토콜을 준수하는 교환가능한 객체들 Strategy Pattern 예시코드 // MARK: - Strategy Protocol protocol MovieRatingStrategy { var ratingServiceName: String { get } func fetch(.. 2022. 4. 15.
GoF Design Patterns GoF 디자인 패턴 디자인 패턴 : 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인가에 대한 일종의 솔루션 GoF의 디자인패턴에서는 객체지향적 디자인 패턴의 카테고리를 "생성 패턴(Creational Pattern)", "구조 패턴(Structural Pattern)", "행동 패턴(Behavioral Pattern)" 3가지로 구분 Creational Patterns, 생성패턴 생성 패턴은 "인스턴스를 만드는 절차를 추상화"하는 패턴입니다. 생성 패턴에 속하는 패턴들은 객체를 생성하는 방법을 시스템과 분리해줍니다. 생성 패턴에서는 중요한 이슈가 두 가지 생성 패턴은 시스템이 어떤 Concrete Class를 사용하는지에 대한 정보를 캡슐화합니다. 생성 패턴은 이들 클래스의 인스턴스들.. 2022. 3. 14.