亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

責任鏈模式

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

我在代碼中寫了一個Army的Handler類,其中實現(xiàn)它的有陸軍軍士長,陸軍上尉,陸軍上校和將軍,軍士長可以對士兵的請假做審核處理,上尉可以對士兵的破壞請求做處理,上??梢詫κ勘恼檲笳埱笞鎏幚?,而將軍可以對士兵的開戰(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("諜報"), 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);
	}
}


  

責任鏈模式


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国内精品久久久久影院6 | 青青操网址 | 亚洲欧美二区三区久本道 | 亚洲欧美国产精品久久久 | 蕾丝视频在线看片国产 | 亚洲自拍小视频 | 国内精品51视频在线观看 | 久久影院在线观看 | 天天操天天噜 | 亚洲精品一区二区三区四区手机版 | 国内在线播放 | 五月花在线观看播放视频 | 99视频精品免费99在线 | 国产综合久久一区二区三区 | 成在线人免费视频一区二区三区 | 手机看片高清日韩精品 | 精品亚洲视频在线观看 | 这里是九九伊人 | 亚洲狠狠婷婷综合久久久久网站 | 久久大综合 | 天天综合天天添夜夜添狠狠添 | 日本一级毛片免费播 | 日韩a一级欧美一级在线播放 | 狠狠ri| 小h片在线播放 | 波多野结衣绝顶大高潮 | 一级a爱片久久毛片 | 亚洲一级毛片视频 | 亚洲一区二区三区一品精 | 在线观看免费视频a | 亚洲精品欧洲久久婷婷99 | 国产精品suv一区二区 | 国产精品免费观看网站 | 久久www成人看片 | 国产精品第三页在线看 | 色老头老太做爰视频在线观看 | 最近中文日本字幕免费完整 | 久久噜| 亚洲欧美日韩第一页 | 伊人网在线视频 | 亚欧洲精品在线视频免费观看 |