差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| study:java:design_pattern:composite [2008/09/14 08:58] – banana | study:java:design_pattern:composite [2008/09/14 09:08] (現在) – banana | ||
|---|---|---|---|
| 行 255: | 行 255: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| 行 297: | 行 298: | ||
| </ | </ | ||
| + | |||
| + | ===== Waitress Class ===== | ||
| + | 여기까지 오는데 여정이 길었습니다. 이제 마지막으로 Client인 **%%Waitress%%**클래스를 구현할 차례입니다. | ||
| + | 앞서 메뉴에 있는 모든 항목에 대해서 반복작업을 수행할 수 있는 방법이 생겼으므로 그 방법을 활용해서 | ||
| + | **%%Waitress%%**에 어떤 항목이 채식주의자용 메뉴인지 알아내기 위한 메소드를 추가해보도록 하겠습니다. | ||
| + | |||
| + | <code java> | ||
| + | public class Waitress { | ||
| + | MenuComponent allMenus; | ||
| + | |||
| + | public Waitress(MenuComponent allMenus) { | ||
| + | this.allMenus = allMenus; | ||
| + | } | ||
| + | |||
| + | public void printMenu() { | ||
| + | allMenus.print(); | ||
| + | } | ||
| + | |||
| + | public void printVegetarianMenu() { | ||
| + | Iterator iterator = allMenus.createIterator(); | ||
| + | System.out.println(" | ||
| + | while (iterator.hasNext()) { | ||
| + | MenuComponent menuComponent = (MenuComponent) iterator.next(); | ||
| + | try { | ||
| + | if (menuComponent.isVegetarian()) { | ||
| + | menuComponent.print(); | ||
| + | } | ||
| + | } catch (UnsupportedOperationException e) {} | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | %%Menu%%의 %%isVegetarian()%%에서는 항상 예외를 던지도록 만들어 놨습니다. 그래서 예외가 발생하면 그 예외를 | ||
| + | 잡긴 하지만, 아무 일 없이 반복 작업을 계속 수행하도록 했습니다. | ||