Study/Design Pattern
-
[Design Pattern] Template Method Pattern 템플릿 메소드 패턴Study/Design Pattern 2021. 7. 31. 21:39
템플릿 메소드 패턴이란 비지니스 로직은 세부 구현으로 부터 분리하는 디자인 패턴으로 GOF에 따르면 다음과 같다. 즉 간단하게 말하자면 여러 클래스에서 공통된 행위를 상위 클래스에서 정의하고, 하위 클래스에서 각각의 상세부분을 구현하는 것을 말한다. 더보기 알고리즘의 구조를 메소드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴이다. 알고리즘이 단계별로 나누어 지거나, 같은 역할을 하는 메소드이지만 여러곳에서 다른형태로 사용이 필요한 경우 유용한 패턴이다. – GoF Design Patterns 만약 다음과 같이 Gun이라는 추상클래스가 존재하고 shoot이라는 메소드를 가진다고 가정하자. shoot은 3가지 단계로 이루어진것을 확인할 수 있다. 하지만 각 단계의 구현은..
-
[Design Pattern] Observer Pattern 옵저버 패턴Study/Design Pattern 2021. 7. 28. 19:10
여러 객체를 구현하면 객체끼리 의존 관계를 가지기도 합니다. 예를 들어 '오늘의 메뉴'라는 객체가 있고 학생들 객체가 있으면, 오늘의 메뉴 객체의 내용에 따라 학생들이 먹는 음식 또한 달라질 것입니다. 이처럼 의존성을 가지는 다른 객체들에게 변경 상황을 알릴 필요가 있는데 이때 사용되는 디자인 패턴이 옵저버 패턴입니다. 옵저버 패턴은 객체 사이에 일 대 다의 의존 관계를 정의해 두어, 어떤 객체의 상태가 변할 때 그 객체에 의존성을 가진 다른 객체들이 그 변화를 통지받고 자동으로 갱신될 수 있게 만듭니다. class TodayMenu { public String meal; public String soup; public String sideDish1; public String sideDish2; } pu..
-
[Design Pattern] Builder Pattern 빌더 패턴Study/Design Pattern 2021. 7. 22. 01:23
public class Person{ private final String name; private final int age; private final String country; private final String gender; } 빌더 패턴은 객체를 생성하는 패턴으로 팩토리 패턴과는 또 다른 디자인 패턴입니다. 만약 위와 같은 Person이라는 클래스를 가정해보겠습니다. 만약 이 클래스를 생성자로 직접 생성한다면 다음과 같은 문제점이 발생할 수 있습니다. 1. 클라이언트에서 생성자로 파라미터를 넘겨줄 때, 파라미터 수가 많으면 타입, 순서 관리가 어려워지고 가독성이 떨어집니다. 만약 Person의 멤버 변수가 위와 같이 4개가 아닌 10개, 20개처럼 많으면 아래 코드처럼 생성자의 파라미터 부분이 ..
-
[Design Pattern] Strategy Pattern 전략 패턴Study/Design Pattern 2021. 7. 18. 18:36
client [ˈklaɪənt] Eng 1.client [명사] (전문가의 서비스를 받는) 의뢰인[고객] 2.Client (호텔) 고객을 말한다. 3.client state [명사] 의존국(더 큰 강대국의 지원과 보호에 기대는 나라) 4.client-server [형용사] (명사 앞에만 씀) (컴퓨터) 컴퓨터 시스템이 클라이언트 서버형인(중앙의 서버로 연결된 여러 대의 컴퓨터가 데이터를 공유하는 시스템인) 참조 peer-to-peer 5.mail client (컴퓨터) 이메일 고객 ((이메일 송수신 서비스를 받는 컴퓨터)) 6.고객 顧客 (상점 등의) customer; (호텔 등의) guest; (단골 ) (formal) patron; (변호사·은행 등의) client; (집합적) clientele 7...
-
[Design Pattern] Adapter Pattern 어댑터 패턴Study/Design Pattern 2021. 7. 18. 01:15
어댑터 패턴이란 어떤 인터페이스를 상속받는 클래스를 다른 인터페이스로 변환하여 사용하고자 할 때 사용되는 디자인 패턴이다. 이를 통해 관계가 없는 인터페이스들을 같이 사용 가능하고, 클래스의 재활용성이 증가하는 장점이 있다. // Human 인터페이스 public interface Human{ public void talk(); public void walk(); } // 구현 class public class Asian implements Human{ @Override public void talk(){ System.out.println("I am an Asian"); } public void walk(){ System.out.println("Asian walks"); } } // Dog 인터페이스 p..
-
[Design Pattern] Factory Pattern 팩토리 패턴Study/Design Pattern 2021. 7. 17. 21:24
인터페이스를 상속받는 구현 클래스들의 객체를 생성할 때, 생성자를 통해 직접 생성하는 것이 아닌 해당 인터페이스를 상속하는 하위 클래스에서 객체를 생성하는 것을 팩토리 패턴이라고 한다. 즉 객체 생성을 다른 서브 클래스로 캡슐화하여 구현 클래스에 대한 의존성을 줄이는 것이다. 이를 통해 얻을수 있는 효과는 클래스간의 결합도를 낮춰, 변경과 제거를 최소화 할 수 있다. 만약 음식이라는 클래스를 상속받는 여러 음료수 하위 클래스가 존재하는 상황을 가정해 보겠다. // Food 추상 클래스 public abstract class Food{ public abstract String eat(); } /////////////////////////////// public class Pizza extends Food{..
-
[Design Pattern] Singleton Pattern 싱글톤 패턴Study/Design Pattern 2021. 7. 15. 19:16
싱글턴 패턴이란(Singleton Pattern) 어떤 구현 클래스의 인스턴스를 단 1개만 생성하는 패턴입니다. 인스턴스가 남용돼서 자원을 낭비하는 경우를 없애고, 시스템 전반에 걸쳐 하나의 자원을 공유하여 사용하고자 할때 유용한 패턴입니다. 그래서 싱글톤 패턴을 간단하게 구현해보면 아래와 같이 구현 가능합니다. 기본생성자, 복사생성자, 제거자를 private으로 지정하여 외부의 접근을 막고, getInstance 맴버함수로만 instance를 생성할 수 있게 하는 것입니다. locking Eng 1.locking [명사] (브레이크댄스의) 로킹(과장된 동작의 코미디 댄스); 〈컴퓨터〉 잠그기. 2.locking [명사] (기계공학) 로킹 3.lock [동사] (자물쇠로) 잠그다[잠기다] 4.lock1 ..