第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

設(shè)計(jì)模式新解-State模式

標(biāo)簽:
架構(gòu)

我们平常设计和编码的时候,经常会想到设计模式,但是怎么把设计模式用好,是个难点,下面作者用一系列文章来讲解下设计模式的用法。本节讲解:State模式

图片描述

使用场景:

我们程序实现的时候,需要不停的进行状态切换,而且这个切换状态比较多,切换的方式没有规律性,那么需要用到State模式。

State和if-elseif 的区别:

一般的状态判断,使用if-elseif 就可以解决,比方下面的例子:

  if(c==1) {
    return "blue";
}else if(c==2) {
    return "red";
}else if(c==3) {
    return "green";
}

另外的一个例子就是:

  if(color.equals("red")) {
            return "blue";
        }else if(color.equals("blue")) {
            return "green";
        }else if(color.equals("green")) {
            return "red";
        }

这种类型,使用if-else if 就可以解决,首先,颜色变化不是很多(只有3种颜色,其次变化顺序固定,red-->blue-->green)
但是试想,如果我们有这样的需求: 要求一共100中颜色之间进行转换,不仅要求从red-->blue,而且要求blue --> red, 那么State模式就是必要的。

State模式的实现方式:

  1. 定义一个State类
package state;
public abstract class State{
   public abstract void forward(Context c);
   public abstract void backward(Context c);
   public abstract String getcolor();
}
  1. 将每个状态定义为一个State子类
package state;

public class BlueState extends State {

public String getcolor(){ 
    return "blue";
}
@Override
public void forward(Context c) {
    // TODO Auto-generated method stub
    c.setState(new GreenState());
}
@Override
public void backward(Context c) {
    // TODO Auto-generated method stub
    c.setState(new RedState());
}
}
  1. 定义Context类
package state;

public class Context {
    private State state = null; 

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

    public void forward() {
        state.forward(this);
    }

    public void pull() {
        state.backward(this);
    }
}
  1. 实际调用,只需要通过Context类就可以自行完成状态的转换。
  2. 使用经典案例:
    A. 银行账户状态切换。
    B. TCP Connection 状态切换。
    C. E-Mail里面各种状态的切换。
    D. 各种绘图程序。
點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消