設計模式——橋梁模式
阿新 • • 發佈:2018-03-31
部分 引用 抽象 pos 軟件 this mar png protected
橋梁模式定義
將抽象和實現解耦,使得二者可以獨立變化
所謂耦合,就是兩個實體的行為的某種強關聯。而將它們的強關聯去掉,就是耦合的解脫,或稱脫耦。在這裏,脫耦是指將抽象化和實現化之間的耦合解脫開,或者說是將它們之間的強關聯改換成弱關聯。
將兩個角色之間的繼承關系改為聚合關系,就是將它們之間的強關聯改換成為弱關聯。因此,橋梁模式中的所謂脫耦,就是指在一個軟件系統的抽象化和實現化之間使用組合/聚合關系而不是繼承關系,從而使兩者可以相對獨立地變化。這就是橋梁模式的用意。
橋接模式角色
1.Abstraction 抽象化角色
主要職責是定義出該角色的行為,同事保存一個隊實現話角色的引用,一般為抽象類
2.Implementor實現化角色
接口或者抽象類,定義必須的行為和屬性
3.RefinedAbstracction修正抽象畫角色
它引用是實現化角色對抽象化角色進行修正。
4.ConcreteImplementor具體實現化角色
他的實現接口或者抽象類定義的方法和屬性代碼實例
public abstract class Abstraction {
protected Implementor impl;
public Abstraction(Implementor impl){
this.impl = impl;
}
//示例方法
public void operation(){
impl.operationImpl();
}
}
public class RefinedAbstraction extends Abstraction { public RefinedAbstraction(Implementor impl) { super(impl); } //其他的操作方法 public void otherOperation(){ } }
public abstract class Implementor {
/**
* 示例方法,實現抽象部分需要的某些具體功能
*/
public abstract void operationImpl();
}
public class ConcreteImplementorA extends Implementor {
@Override
public void operationImpl() {
//具體操作
}
}
public class ConcreteImplementorB extends Implementor { @Override public void operationImpl() { //具體操作 } }
- 使用場景
考慮這樣一個實際的業務功能:發送提示消息。基本上所有帶業務流程處理的系統都會有這樣的功能,比如OA上有尚未處理完畢的文件,需要發送一條消息提示他。
從業務上看,消息又分成普通消息、加急消息和特急消息多種,不同的消息類型,業務功能處理是不一樣的,比如加急消息是在消息上添加加急,而特急消息除了添加特急外,還會做一條催促的記錄,多久不完成會繼續催促;從發送消息的手段上看,又有系統內短消息、手機短信息、郵件等。
設計模式——橋梁模式