Saturday, February 22, 2014

Open-Closed Principle (OCP)

@desc
  : Classes should be open for extension(확장), but closed for modification(코드 변경)

@example
  : Beverage(Super Class) & CondimentDecorator(Sub Class)
  : DarkRoast is Beverage, and Mocha, Whip are CondimentDecorator
  : Mocha는 Beverage(DarkRoast)의 Cost() 결과에 Mocha에 해당하는 처리만 덧붙인다.
  : Whip은 Beverage(DarkRoast + Mocha)의 Cost() 결과에 Whip에 해당하는 처리만 덧붙인다.
  : 즉 각각의 Decorator는 자신의 객체인 Beverage의 결과에는 아무런 영향을 주지 않으면서,
  : 동시에 필요한 기능을 확장하게 된다.




@reference
  : Head First Design Patterns
    by Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates, 1st Ed.

No comments:

Post a Comment