1. 程式人生 > 其它 >為什麼大部分的Android開發成為不了架構師

為什麼大部分的Android開發成為不了架構師

1、簡介

  定義物件間的一種一對多的依賴關係,當一個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。

  狀態模式允許一個物件在其內部狀態改變時改變其行為,這個物件看上去就像改變了他的類一樣

2、狀態模式類圖

3、狀態模式涉及到的角色

  從上圖可以看出 狀態模式涉及到以下幾個角色

  3.1、抽象狀態(State)角色:定義一個介面,用以封裝環境物件的一個特定的狀態所對應的行為

  3.2、具體狀態(ConcreteState)角色:每一個具體狀態類都實現了環境的一個狀態所對應的行為

  3.3、環境(Context)角色:環境角色持有一個狀態類的例項,這個狀態類的例項給出環境物件的現有狀態

4、原始碼

  4.1、抽象狀態角色

package State;
/**
 * ********************************************************    
* @ClassName: State 
* @Description: 抽象狀態介面
***********************************************************
 */
public interface State {
    String SimpleOperation();
}

  4.2、具體狀態角色1

package State;
/**
 * ********************************************************    
* @ClassName: ConcreteState 
* @Description: 具體狀態類
***********************************************************
 */
public class Sit implements State{

    @Override
    public String SimpleOperation() {
    return    "我坐下了";
    }

}

  4.3、具體狀態角色2

package State;
/**
 * ********************************************************    
* @ClassName: Stand 
* @Description: 具體狀態類
***********************************************************
 */
public class Stand implements State{

    @Override
    public String SimpleOperation() {
        return "我站起來了";
    }

}

  4.4、環境角色

package State;
/**
 * ********************************************************    
* @ClassName: Context 
* @Description:環境類 環境類持有一個State物件  並把所有的行為委派給此物件
***********************************************************
 */
public class Context {
    private State state;
    
    public State getState() {
        return state;
    }

    public void setState(State state) {
        this.state = state;
    }

    
    public String stateManage(){
        return state.SimpleOperation();
    }
    
}

  4.5、測試客戶端

package State;
/**
 * ********************************************************    
* @ClassName: Client 
* @Description: 狀態模式測試客戶端
***********************************************************
 */
public class Client {

    public static void main(String[] args) {
        Context context = new Context();
        context.setState(new Sit());
        System.out.println(context.stateManage());
        context.setState(new Stand());
        System.out.println(context.stateManage());
    }
}