본문 바로가기

코딩에 도움이 되는 요소/디자인 패턴

(4)
(디자인 패턴) 무한 복제!! 프로토 타입 패턴을 알아보자!! 실제로 복제되는 객체틀에 복제 프로세스를 위임하는 패턴복제를 지원하는 모든 객체에 대한 공통 인터페이스를 선언한다일반적으로 이런 인터페이스 에는 단일 clone 메서드만 포함이 된다메인 프로토타입 클래스는 복제 메서드를 구현한다 메서드를 복제하는 것 이외에도 복제 프로세스와 관련된 일부 예외적인 경우들도 처리 될 수도 있다프로토타입 패턴의 적용복사해야 하는 객체 들의 구상 클래스들에 코드가 의존하면 안되는 경우 사용하면 좋다각자의 객체를 초기화 하는 방식만 다른 자식 클래스들의 수를 줄이고 싶을때 사용한다프로토타입 패턴 구현 방법Interface를 생성 후에 내부에 clone메서드를 필수로 선언한다프로토타입 클래스는 이 클래스의 객체를 인수로 받아들이는 대체 생성자를 정의해야 한다생성자는 해당 클래스에 ..
객체를 단계적으로 생산하는 패턴!! 빌더 패턴을 알아보자 빌더 패턴이란?? 복잡한 객체들을 단계적으로 생성할 수 있게 하는 생성 디자인 패턴같은 제작 코드를 사용하여 객체의 다양한 유형들과 표현을 제작 할 수 있다빌더 패턴의 구조Builder Interface는 모든 유형의 빌더들에게 적용되는 공통 생성 메서드를 선언한다구상 빌더에서는 Builder Interface를 상속 받은 이후에 Builder Interface 내부 메서드를 재정의 함은 물론 다양한 추가 메서드를 구현한다객체들은 다른 빌더들에 의해 생성된 객체들은 같은 클래스 계층 구조 또는 Interface에 속할 필요가 없다생성 단계들을 호출하는 클래스를 하나의 클래스로 정의하여 객체들의 특정 설정을 만들고 재사용이 가능하게끔 구현을 한다클라이언트는 빌더 객체들 중 하나를 생성 단계를 호출하는 클래..
(디자인 패턴)구상 클래스를 지정하지 않고 객체들의 모음을 생성하는 추상 팩토리 패턴을 알아보자!! 추상 팩토리 패턴이란관련 객체들의 구상 클래스들을 지정하지 않고도 관련 객체들의 모음을 생성할 수 있도록 하는 패턴추상 팩토리 패턴의 방식각 객체군에 해당하는 개별적인 인터페이스를 명시적으로 선언한다interface Sofa { fun hasLags() fun sitOn()}class ModernSofa:Sofa { override fun hasLags() { println("다리가 굵게 2개") } override fun sitOn() { println("여러명 앉기 가능") }}class VictorianSofa:Sofa { override fun hasLags() { println("(빅토리안)다리가 굵게 2개") } ..
[디자인 패턴] 가상의 생성자를 두어서 관리하자!! 팩토리 메서드 패턴 의도가상의 생성자를 두어서 따로 관리하는 방법부모 클래스에서 객체들을 생성할 수 있는 Interface를 제공하지만 자식 클래스들이 생성될 객체들의 유형을 변경할 수 있도록 하는 생성 패턴문제하나의 클래스이 모든 함수나 객체가 구현되어 있는 경우 추후에 많은 코드들이 추가 될 경우 추가 수정이 어려워짐은 물론 가독성이 떨어질 수도 있다구현 방법모든 자식 클래스는 같은 Interface를 따르도록 설계를 진행한다 따라서 Interface는 모든 자식 클래스에서 의미가 있는 메서드를 선언한다Interface에 공통 함수에는 반환 값이 생성자 Interface를 받도록 구현을 한다자식 클래스가 상속을 받으면서 생성자 Interface를 리턴 받을 수 있도록 구현한다장점Interface와 자식 클래스가 단단하게..