欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

責(zé)任鏈模式

系統(tǒng) 1911 0
Chain of Responsibility(CoR) 是用一系列類(classes)試圖處理一個(gè)請求request,這些類之間是一個(gè)松散的耦合,唯一共同點(diǎn)是在他們之間傳遞request. 也就是說,來了一個(gè)請求,A類先處理,如果沒有處理,就傳遞到B類處理,如果沒有處理,就傳遞到C類處理,就這樣象一個(gè)鏈條(chain)一樣傳遞下去。
1) 抽象處理者角色(Handler):它定義了一個(gè)處理請求的接口。當(dāng)然對于鏈子的不同實(shí)現(xiàn),也可以在這個(gè)角色中實(shí)現(xiàn)后繼鏈。
2) 具體處理者角色(Concrete Handler):實(shí)現(xiàn)抽象角色中定義的接口,并處理它所負(fù)責(zé)的請求。如果不能處理則訪問它的后繼者。
至于類圖不放也罷。畢竟就是一個(gè)繼承或者實(shí)現(xiàn)。
純與不純
責(zé)任鏈模式的純與不純的區(qū)別,就像黑貓、白貓的區(qū)別一樣。不要刻意的去使自己的代碼來符合一個(gè)模式的公式。只要能夠使代碼降低耦合、提高重用,滿足系統(tǒng)需求并能很好的適應(yīng)變化就好了。正所謂:管它黑貓白貓,抓住老鼠就是好貓!
純的責(zé)任鏈模式,規(guī)定一個(gè)具體處理者角色只能對請求作出兩種動(dòng)作:自己處理;傳給下家。不能出現(xiàn)處理了一部分,把剩下的傳給了下家的情況。而且請求在責(zé)任鏈中必須被處理,而不能出現(xiàn)無果而終的結(jié)局。
反之,則就是不純的責(zé)任鏈模式。
不純的責(zé)任鏈模式還算是責(zé)任鏈模式嗎?比如一個(gè)請求被捕獲后,每個(gè)具體處理者都嘗試去處理它,不管結(jié)果如何都將請求再次轉(zhuǎn)發(fā)。我認(rèn)為這種方式的實(shí)現(xiàn),算不算是責(zé)任鏈模式的一種倒不重要,重要的是我們也能從中體味到責(zé)任鏈模式的思想:通過將多個(gè)處理者之間建立聯(lián)系,來達(dá)到請求與具體的某個(gè)處理者的解耦。

我在代碼中寫了一個(gè)Army的Handler類,其中實(shí)現(xiàn)它的有陸軍軍士長,陸軍上尉,陸軍上校和將軍,軍士長可以對士兵的請假做審核處理,上尉可以對士兵的破壞請求做處理,上校可以對士兵的諜報(bào)請求做處理,而將軍可以對士兵的開戰(zhàn)請求做處理。
handler:
    package pattern.chain;

public abstract class Army {
	protected Army army;

	public Army(Army army) {
		this.army = army;
	}
	Status s;
	public enum Status {
		JIA("請假"), PO("破壞"), DIE("諜報(bào)"), KAI("開戰(zhàn)");
		String value = "";

		private Status(String value) {
			this.value = value;
		}

		String getValue() {
			return this.value;
		}
	}

	public void setNext(Army army) {
		this.army = army;

	}

	protected abstract void handler(Status s);

	public void next() {
		try {
			Thread.sleep(200);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if (army != null) {
			army.handler(s);
		}

	}
}

  

    
package pattern.chain;

public class General extends Army {

	public General(Army army) {
		super(army);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void handler(Status s) {
		this.s = s;
		if (Status.KAI.equals(s)) {
			System.out.println("將軍同意");

		} else {
			next();
		}
	}

}


  

    
package pattern.chain;

public class Colonel extends Army {

	public Colonel(Army army) {
		super(army);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void handler(Status ss) {
	this.s=ss;
		
		if (Status.DIE.equals(s)) {
			System.out.println("少校同意");
		} else {
			next();		}
	}

}

  

    

package pattern.chain;

public class Captain extends Army {

	public Captain(Army army) {
		super(army);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void handler(Status ss) {
		this.s = ss;

		if (Status.PO.equals(s)) {
			System.out.println("上尉同意");
		} else {
			next();
		}
	}

}


  

    
package pattern.chain;

public class Commander extends Army {

	public Commander(Army army) {
		super(army);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void handler(Status ss) {
		this.s = ss;

		if (Status.JIA.equals(s)) {
			System.out.println("士官長同意");
		} else {
			next();
		}
	}

}


  

Test:
    
package pattern.chain;

import pattern.chain.Army.Status;

public class Test {
	public static void main(String[] args) {
		Army gen = new General(null);
		Army col = new Colonel(gen);
		Army cap = new Captain(col);
		Army com = new Commander(cap);
		com.setNext(cap);
		cap.setNext(col);
		col.setNext(gen);
		com.handler(Status.KAI);
	}
}


  

責(zé)任鏈模式


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久成人免费观看草草影院 | 日韩一区二区福利视频 | 午夜精品久久久 | 999久久久 | 久久观看 | 午夜私人影院粉色视频我要 | 国内久久精品 | 午夜人成 | 免费毛片在线视频 | 精品欧美日韩 | 久久综合成人网 | 欧美精品99久久久久久人 | 免费一级毛片 | 天天干天天干 | 五月婷在线 | 亚洲国产成人精品女人久久久 | 精品的一区二区三区 | 免费看一区二区三区 | 婷婷色香五月激情综合2020 | 色香首页 | 99久久久久国产精品免费 | 人人爱天天做夜夜爽 | 看片免费黄 | 中文字幕在线免费看 | 国产美女的小嫩bbb图片 | 日韩在线亚洲 | 午夜视频在线免费观看 | 亚洲已满18点击进入在线观看 | 国产一级电影网 | 特级一级毛片免费看 | 久久精品免费视频观看 | 男人激烈吮乳动态图 | 久久精品人人做人人爽 | 视频在线一区二区 | 欧美 video| 美乃雀中文字幕在线一区 | 欧美三级午夜理伦三级小说 | 亚洲精品无码成人A片色欲 亚洲欧美日韩激情在线观看 | 久久精品一级 | 91tm视频 | 久久久久国产精品一区 |