設計模式 職責鏈模式(本質 分離職責,動態組合)

2021-09-24 03:37:04 字數 1840 閱讀 3556

抽象處理者(handler)角色:定義出乙個處理請求的介面。如果需要,介面可以定義出乙個方法,以設定和返回對下家的引用。這個角色通常由乙個抽象類或介面實現。

具體處理者(concretehandler)角色:具體處理者接到請求後,可以選擇將請求處理掉,或者將請求傳給下家。由於具體處理者持有對下家的引用,因此,如果需要,具體處理者可以訪問下家。

請求者和接收者鬆散耦合

動態組合職責

產生很多細粒度物件

不一定能被處理

需要提供預設處理

uml圖:

**實現:

package 公費聚餐;

public abstract class handler

public handler gethandler()

public abstract void request(int money) throws exception;

}package 公費聚餐;

public class generalmanager extends handler else }}

package 公費聚餐;

public class departmanger extends handlerelse

}}package 公費聚餐;

public class projectmanager extends handler else }}

package 公費聚餐;

public class client

}

uml圖:

**實現:

package 小菜漲工資;

public class request

public void settype(string type)

public integer getnumber()

public void setnumber(integer number)

}package 小菜漲工資;

public abstract class manager

public manager getmanager()

public abstract void request(request request); }

package 小菜漲工資;

public class majormanager extends manager else }}

package 小菜漲工資;

public class generalmanager extends manager else if(request.gettype().equals("漲工資")&&request.getnumber()<=200)else }}

package 小菜漲工資;

public class connonmanger extends manager else }}

package 小菜漲工資;

public class client

}

the end;

設計模式 職責鏈模式

2008年08月17日 星期日 下午 04 28 using system using system.collections.generic using system.text public officer officer o public abstract void deal action a c...

設計模式 職責鏈模式

1 request.h ifndef request h define request h include include using namespace std class request 請求類定義 endif request h 2 manager.h ifndef manager h def...

設計模式 職責鏈模式

今天跟大家分享下設計模式中的職責鏈模式。不知道大家在學習職責鏈模式的時候是否感覺困難。我剛開始學的時候就被整暈了。呵呵,進入正題。職責鏈模式是物件行為型模式中比較有特點的設計模式了,的確有意思,它可以像資料結構中煉表一樣傳遞。其實生活中好多的行為方式都體現了職責鏈模式,我們初期學習者可以把職責鏈模式...