国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

責任鏈模式

2019-11-06 09:55:34
字體:
來源:轉載
供稿:網友

學習筆記

對責任鏈模式概念的解釋來自:http://www.cnblogs.com/java-my-life/archive/2012/05/28/2516865.html

責任鏈模式:責任鏈模式是一種對象的行為模式。在責任鏈模式里,很多對象由每一個對象對其下家的引用而連接起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某一個對象決定處理此請求。發出這個請求的客戶端并不知道鏈上的哪一個對象最終處理這個請求,這使得系統可以在不影響客戶端的情況下動態地重新組織和分配責任。

運用場景:android中的事件處理機制、有序廣播

項目目錄:

AbstractRequest.java類(抽象請求類)

package com.example.resposbility;public abstract class AbstractRequest {	PRivate Object object;		public AbstractRequest(Object object)	{		this.object=object;	}	/**	 * 具體的內容對象	 * @return	 */	public Object getContent()	{		return object;	}	/**	 * 獲取請求級別	 */	public abstract int getRequestLevel();}

Handler.java類(抽象處理類)

package com.example.resposbility;public abstract class Handler {	public Handler nextHandler;	public  void handleRequest(AbstractRequest abstractRequest)	{		if(getHandleLevel()==abstractRequest.getRequestLevel())		{			handle(abstractRequest);		}else {			if(nextHandler!=null)			{				nextHandler.handleRequest(abstractRequest);			}else {				System.out.println("---->  所有的處理對象都不能處理它");			}					}	}	/**	 * 每個處理者的對象的具體處理方式	 * @param abstractRequest	 */	public abstract void handle(AbstractRequest abstractRequest);	/**	 * 每個處著對象處理的級別	 * @return	 */	public abstract int getHandleLevel();}定義三個具體的請求類:

Request1.java類

package com.example.resposbility;public class Request1 extends AbstractRequest{	public Request1(Object object) {		super(object);					}	@Override	public int getRequestLevel() {		return 1;	}}

Request2.java類

package com.example.resposbility;public class Request2  extends AbstractRequest{	public Request2(Object object) {		super(object);	}	@Override	public int getRequestLevel() {		return 2;	}}

Request3.java類

package com.example.resposbility;public class Request3  extends AbstractRequest{	public Request3(Object object) {		super(object);	}	@Override	public int getRequestLevel() {		return 3;	}}

定義三個具體的請求類

Handler1.java類

package com.example.resposbility;public class Handler1 extends Handler{	@Override	public void handle(AbstractRequest abstractRequest) {		System.out.println("----handle1  處理請求: "+abstractRequest.getRequestLevel());	}	@Override	public int getHandleLevel() {		return 1;	}  }Handler2.java類

package com.example.resposbility;public class Handler2 extends Handler {	@Override	public void handle(AbstractRequest abstractRequest) {		System.out.println("----handle2  處理請求: "+abstractRequest.getRequestLevel());	}	@Override	public int getHandleLevel() {		return 2;	}}Handler3.java類

package com.example.resposbility;public class Handler3   extends Handler {	@Override	public void handle(AbstractRequest abstractRequest) {		System.out.println("----handle3  處理請求: "+abstractRequest.getRequestLevel());	}	@Override	public int getHandleLevel() {		return 3;	}}

測試:

Client.java類

package com.example;import com.example.resposbility.AbstractRequest;import com.example.resposbility.Handler;import com.example.resposbility.Handler1;import com.example.resposbility.Handler2;import com.example.resposbility.Handler3;import com.example.resposbility.Request3;public class Client {	public static void main(String[] args) {		//確定鏈式關系		Handler handler1=new Handler1();		Handler handler2=new Handler2();		Handler handler3=new Handler3();		handler1.nextHandler=handler2;		handler2.nextHandler=handler3;				AbstractRequest request3=new Request3("請求1");				handler1.handleRequest(request3);	}}


上一篇:swift中的枚舉

下一篇:html5Mode

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 揭东县| 丹阳市| 隆回县| 客服| 龙州县| 石城县| 宜章县| 崇礼县| 韩城市| 岳西县| 沈阳市| 吴江市| 兴和县| 阜南县| 山东| 苏尼特右旗| 定陶县| 佛坪县| 长乐市| 成武县| 来安县| 壶关县| 龙江县| 黄大仙区| 习水县| 荆门市| 南通市| 绥阳县| 托克托县| 百色市| 黄大仙区| 公安县| 陕西省| 嫩江县| 手游| 绥德县| 江川县| 巫溪县| 曲阜市| 揭阳市| 江西省|