본문 바로가기

OOP

(10)
헤드퍼스트 디자인패턴 - 상태 패턴(State Pattern) 상태패턴(State Pattern)이란 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. 여기서는 뽑기 기계에 게임기능을 추가하고 (10%의 확률로 알맹이를 하나 더받는 이벤트) 이라는 스티커를 붙여서 광고할 계획이다. 하지만 코드 추가를 하면 점점 복잡해진다 그래서 공통 상태의 별도의 하나의 상태 State라는 인터페이스로 만들고 그것을 구현하는 식으로. 즉 캡슐화로 만들 것이다. 여기서 캡슐화란 ? 객체지향프로그래밍에서의 중요한 특징 중 하나로, 연관된 데이터와 함수를 논리적으로 묶어놓은 것이며, 데이터를 보호하기 위해 다른 객체의 접근을 제한하는 접근 제한 수식자의 기능을 제공한다. (두산백과)상태State들을 클래스로 만..
헤드퍼스트 디자인패턴 - 데코레이터 패턴(Decorator Pattern) 예를들어 커피주문을 할 때 사용자의 원하는 기호에 따라 시럽을 넣기도 하고 크림을 더 추가할 수 있다 이럴때 클래스를 상속하고 또 상속을 하면 끝이 없다 그래서 클래스를 추상클래스로 만들 필요가 있다.public abstract class Beverage { String description = "제목없음"; public String getDescription() { return description; /* 커피 새 메뉴 이름 description 리턴 */ } public abstract double cost(); /* 커피 새 메뉴 가격 리턴 */ } 추상클래스를 만들어서 새 메뉴가 추가되면 추상클래스와 새메뉴클래스를 하나로 감싸고 메뉴 이름과 가격을 리턴을 한다. 기존 코드를 건드리지 않고 디자인패..