본문 바로가기
반응형

Design Pattern3

데코레이터 패턴 (decorator pattern) '마을'은 번창하기 시작하여 많은 '사람'들이 이주하기 시작했다. 다양한 사람들이 모여사는 만큼 마을사람들이 지켜야할 규칙을 제정할 필요가 생겼다. public class FundamentalLaw { //법 1항을 제공 getLaw1() {} //법 2항을 제공 getLaw2() {} ... } 이런식으로 마을의 규칙을 정의한다면 새로운 법이 생길때 마다 계속해서 추가해 줘야 할 것이다. 그러나.... 디자인원칙 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어야 한다.(OCP) 새로운 법이 생긴다고 기존의 코드를 계속 변경한다면 OCP 디자인 원칙을 위반하는 코딩 방법이다. 데코레이터 패턴을 이용하여 마을의 규칙을 재정의해보자. interface Law { String en.. 2022. 2. 4.
옵저버 패턴 (observer pattern) Billy는 소식을 전해주는 신문사를 만들고 싶다. 신문사(社)를 프로그래밍 해야 한다면 어떻게 해야 할까? 신문 회사인 '빌리의 신문회사'를 만들어보자 //빌리의 신문사(BillysNewspaper) 클래스를 정의한다. public class BillysNewspaper { //정치 뉴스를 제공 getPolitical() {} //연예 뉴스를 제공 getEntertainment() {} //프로그래밍 뉴스를 제공 getProgramming() {} //새로운 소식을 전달함 deliverNews() {} } 새로운 소식을 전달하는 deleverNews를 어떻게 정의하면 좋을까? //신문사(Newspaper) 클래스를 정의한다. public class BillysNewspaper { //정치 뉴스를 제공 .. 2021. 12. 27.
전략 패턴 (strategy pattern) '인간'들이 살고 있는 '마을'을 프로그래밍 한다면 어떻게 해야 할까? 먼저 인간이란 무엇인지를 추상적으로 정의해보자. public abstract class Human { public void eating() { system.out.println("먹는다"); } public void sleeping() { system.out.println("잔다"); } working()//사람마다 하는 일이 다름으로 추상 메소드 } 여기 프로그래머 James가 있다. 그를 Class로 정의한다면? class James extends Human { @Override pulbic void working() { system.out.println("프로그래밍을 한다"); } } 현재의 인류는 호모 루덴스(유희하는 인간)이.. 2021. 12. 22.
반응형