Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-15.log failed
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
study:java:design_pattern:state [2008/09/20 06:00] – banana | study:java:design_pattern:state [2010/10/16 02:09] (現在) – banana | ||
---|---|---|---|
行 39: | 行 39: | ||
스테이트 패턴은 컨텍스트 객체에 수많은 조건문을 집어넣는 대신에 사용할 수 있는 패턴이라고 생각하면 됩니다. | 스테이트 패턴은 컨텍스트 객체에 수많은 조건문을 집어넣는 대신에 사용할 수 있는 패턴이라고 생각하면 됩니다. | ||
- | 행동을 상태 객체 내에 캡슐화시키면 컨텍스트 내의 상태 객체를 바꾸는 것만으로도 컨텍스트 객에츼 | + | 행동을 상태 객체 내에 캡슐화시키면 컨텍스트 내의 상태 객체를 바꾸는 것만으로도 컨텍스트 객체의 |
바꿀 수 있으니까요. | 바꿀 수 있으니까요. | ||
行 126: | 行 126: | ||
} | } | ||
</ | </ | ||
+ | |||
===== NoQuarterState Calss ===== | ===== NoQuarterState Calss ===== | ||
- | 상태를 구현해 볼 때가 되었습니다. 우선 NoQuarterState부터 시작해 봅시다. | + | 상태를 구현해 볼 때가 되었습니다. 우선 |
<code java> | <code java> | ||
public class NoQuarterState implements State { | public class NoQuarterState implements State { | ||
行 154: | 行 155: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | |||
+ | |||
===== HasQuarterState Class ===== | ===== HasQuarterState Class ===== | ||
- | 이제 %%GumballMachine%% 클래스하고 상태 클래스가 어떤 식으로 맞물려 돌아가는지 어느 정도 | + | 이제 |
- | 감히 잡힐 것 같군요. 그럼 %%HasQuarterState%%와 %%SoldSate%% 클래스도 구현해 볼까요? | + | 감히 잡힐 것 같군요. 그럼 |
<code java> | <code java> | ||
public class HasQuarterState implements State { | public class HasQuarterState implements State { | ||
+ | | ||
| | ||
行 176: | 行 181: | ||
| | ||
System.out.println(" | System.out.println(" | ||
- | gumballMachine.setState(gumballMachine.getSoldState()); | + | |
+ | if((winner==0) && (gumballMachine.getCount() > 1)) { | ||
+ | | ||
+ | } else { | ||
+ | gumballMachine.setState(gumballMachine.getSoldState()); | ||
+ | } | ||
} | } | ||
行 184: | 行 194: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | |||
+ | |||
===== SoldState Class ===== | ===== SoldState Class ===== | ||
- | %%SolidState%% 클래스도 살펴봅시다. | + | **%%SolidState%%** 클래스도 살펴봅시다. |
+ | <code java> | ||
+ | public class SolidState implements State { | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | | ||
+ | | ||
+ | if (gumballMachine.getCount() > 0) { | ||
+ | | ||
+ | } else { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ===== SoldOutState Class ===== | ||
+ | <code java> | ||
+ | public class SoldOutState implements State { | ||
+ | GumballMachine gumballMachine; | ||
+ | |||
+ | public SoldOutState(GumballMachine gumballMachine) { | ||
+ | | ||
+ | } | ||
+ | |||
+ | public void insertQuarter() { | ||
+ | | ||
+ | } | ||
+ | |||
+ | public void ejectQuarter() { | ||
+ | | ||
+ | } | ||
+ | |||
+ | public void turnCrank() { | ||
+ | | ||
+ | } | ||
+ | |||
+ | public void dispense() { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ===== WinnerState Class ===== | ||
+ | <code java> | ||
+ | public class WinnerState implements State { | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | if (gumballMachine.getCount() == 0) { | ||
+ | | ||
+ | } else { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ |