auto commit
This commit is contained in:
parent
eaa85f8ff3
commit
3aca6a5dbe
|
@ -1459,9 +1459,9 @@ Context 的 request() 方法委托给 State 对象去处理。当 Context 组合
|
||||||
|
|
||||||
但是状态模式是通过状态转移来改变 Context 所组合的 State 对象,而策略模式是通过 Context 本身的决策来改变组合的 Strategy 对象。
|
但是状态模式是通过状态转移来改变 Context 所组合的 State 对象,而策略模式是通过 Context 本身的决策来改变组合的 Strategy 对象。
|
||||||
|
|
||||||
所谓的状态转移,是指 Context 在运行过程中由于一些条件发生改变而使得 State 对象发生改变,主要必须要是在运行过程中。
|
所谓的状态转移,是指 Context 在运行过程中由于一些条件发生改变而使得 State 对象发生改变,注意必须要是在运行过程中。
|
||||||
|
|
||||||
状态模式主要是用来解决状态转移的问题,当状态发生庄毅了,那么 Context 对象就会改变它的行为;而策略模式主要是用来封装一组可以互相替代的算法族,并且可以根据需要动态地去替换 Context 需要使用哪个算法。
|
状态模式主要是用来解决状态转移的问题,当状态发生转移了,那么 Context 对象就会改变它的行为;而策略模式主要是用来封装一组可以互相替代的算法族,并且可以根据需要动态地去替换 Context 需要使用哪个算法。
|
||||||
|
|
||||||
**4. 问题描述**
|
**4. 问题描述**
|
||||||
|
|
||||||
|
@ -1481,7 +1481,7 @@ Context 的 request() 方法委托给 State 对象去处理。当 Context 组合
|
||||||
|
|
||||||
糖果销售机即 Context。
|
糖果销售机即 Context。
|
||||||
|
|
||||||
下面的实现中每个 State 都组合了 Context 对象,这是因为状态转移的操作在 State 对象中,而状态转移过程又必须改变 Context 对象的 state 对象,因此 State 必须拥有 Context 对象。
|
下面的实现中每个 State 都组合了 Context 对象,这是因为状态转移的操作在 State 对象中,而状态转移过程又必须改变 Context 对象的 state 对象,因此 State 必须组合 Context 对象。
|
||||||
|
|
||||||
```java
|
```java
|
||||||
public interface State {
|
public interface State {
|
||||||
|
@ -1508,6 +1508,7 @@ public interface State {
|
||||||
```
|
```
|
||||||
```java
|
```java
|
||||||
public class HasQuarterState implements State{
|
public class HasQuarterState implements State{
|
||||||
|
|
||||||
private GumballMachine gumballMachine;
|
private GumballMachine gumballMachine;
|
||||||
|
|
||||||
public HasQuarterState(GumballMachine gumballMachine){
|
public HasQuarterState(GumballMachine gumballMachine){
|
||||||
|
@ -1539,6 +1540,7 @@ public class HasQuarterState implements State{
|
||||||
```
|
```
|
||||||
```java
|
```java
|
||||||
public class NoQuarterState implements State {
|
public class NoQuarterState implements State {
|
||||||
|
|
||||||
GumballMachine gumballMachine;
|
GumballMachine gumballMachine;
|
||||||
|
|
||||||
public NoQuarterState(GumballMachine gumballMachine) {
|
public NoQuarterState(GumballMachine gumballMachine) {
|
||||||
|
@ -1599,6 +1601,7 @@ public class SoldOutState implements State {
|
||||||
```
|
```
|
||||||
```java
|
```java
|
||||||
public class SoldState implements State {
|
public class SoldState implements State {
|
||||||
|
|
||||||
GumballMachine gumballMachine;
|
GumballMachine gumballMachine;
|
||||||
|
|
||||||
public SoldState(GumballMachine gumballMachine) {
|
public SoldState(GumballMachine gumballMachine) {
|
||||||
|
@ -1634,6 +1637,7 @@ public class SoldState implements State {
|
||||||
```
|
```
|
||||||
```java
|
```java
|
||||||
public class GumballMachine {
|
public class GumballMachine {
|
||||||
|
|
||||||
private State soldOutState;
|
private State soldOutState;
|
||||||
private State noQuarterState;
|
private State noQuarterState;
|
||||||
private State hasQuarterState;
|
private State hasQuarterState;
|
||||||
|
@ -1703,6 +1707,7 @@ public class GumballMachine {
|
||||||
```
|
```
|
||||||
```java
|
```java
|
||||||
public class GumballMachineTestDrive {
|
public class GumballMachineTestDrive {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
GumballMachine gumballMachine = new GumballMachine(5);
|
GumballMachine gumballMachine = new GumballMachine(5);
|
||||||
|
|
||||||
|
@ -1782,7 +1787,7 @@ No gumball dispensed
|
||||||
|
|
||||||
过度使用设计模式可能导致代码被过度工程化,应该总是用最简单的解决方案完成工作,并在真正需要模式的地方才使用它。
|
过度使用设计模式可能导致代码被过度工程化,应该总是用最简单的解决方案完成工作,并在真正需要模式的地方才使用它。
|
||||||
|
|
||||||
反模式:不好的解决方案来解决一个问题。主要作用是为了警告不要使用这些解决方案。
|
反模式:不好的解决方案来解决一个问题。主要作用是为了警告人们不要使用这些解决方案。
|
||||||
|
|
||||||
模式分类:
|
模式分类:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user