UML關系簡單介紹
UML簡單使用的介紹
創(chuàng)建型設計模式
Android設計模式-單例模式
Android設計模式-工廠模式
Android設計模式-抽象工廠模式
Android設計模式-建造者模式
Android設計模式-原型模式
結(jié)構(gòu)型設計模式
Android設計模式-代理模式
Android設計模式-裝飾模式
Android設計模式-適配器模式
Android設計模式-組合模式
Android設計模式-門面模式
Android設計模式-橋接模式
Android設計模式-享元模式
行為型設計模式
Android設計模式-策略模式
Android設計模式-命令模式
Android設計模式-責任鏈模式
Android設計模式-模版方法模式
Android設計模式-迭代器模式
Android設計模式-觀察者模式
Android設計模式-備忘錄模式
Android設計模式-中介者模式
Android設計模式-訪問者模式
Android設計模式-狀態(tài)模式
Android設計模式-解釋器模式
1.定義
將抽象和實現(xiàn)解耦内狗,使得兩者可以獨立的變化
2.橋接模式UML圖
角色介紹
- Abstraction 抽象化角色 定義出該角色的行為,并且保存對實現(xiàn)化角色的引用义锥,該角色一般是抽象類
- Implementor 實現(xiàn)化角色 為接口或者抽象類柳沙,定義角色必須的行為和屬性
- RefinedAbstraction 修正抽象化角色 它引用實現(xiàn)化角色,對抽象畫角色進行修正
- ConcreteImplementor 具體實現(xiàn)化角色 實現(xiàn)了實現(xiàn)化角色里定義的行為和屬性
總結(jié)說就是抽象角色引用了實現(xiàn)角色拌倍,或者說抽象角色的部分實現(xiàn)是由實現(xiàn)角色來完成的
3.簡單實現(xiàn)
3.1抽象化角色
public abstract class Abstraction {
private Implementor implementor;
public Abstraction(Implementor implementor) {
this.implementor = implementor;
}
public Implementor getImplementor() {
return implementor;
}
public void request(){
this.implementor.doSomething();
}
}
3.2實現(xiàn)化角色
public interface Implementor {
void doSomething();
void doAnything();
}
3.3修正抽象化角色
public class RefinedAbstraction extends Abstraction {
public RefinedAbstraction(Implementor implementor) {
super(implementor);
}
@Override
public void request() {
super.request();
super.getImplementor().doAnything();
}
}
3.4 具體實現(xiàn)化角色
public class ConcreteImplementor implements Implementor {
@Override
public void doSomething() {
System.out.println("doSomething");
}
@Override
public void doAnything() {
System.out.println("doAnything");
}
}
3.5場景調(diào)用
public class MyClass {
public static void main(String args[]) {
Implementor implementor=new ConcreteImplementor();
Abstraction abstraction=new RefinedAbstraction(implementor);
abstraction.request();
}
}
打印結(jié)果
doSomething
doAnything
例子很簡單赂鲤,通過橋接模式,可以讓擴展變得很輕松柱恤。
4.總結(jié)
4.1優(yōu)點
- 抽象和實現(xiàn)分離数初,在該模式下,實現(xiàn)可以不受抽象的約束梗顺。不用再綁定在一個固定的抽象層次上泡孩。是為了解決繼承的缺點而提出的設計模式
- 擴展靈活
- 實現(xiàn)細節(jié)對客戶透明,客戶不用關心細節(jié)對實現(xiàn)寺谤,他已經(jīng)在抽象層通過聚合關系完成了封裝
4.2使用場景
- 不適用使用繼承對場景仑鸥,或者不希望使用繼承對場景
- 接口或者抽象類不穩(wěn)定的情況。明知道接口或抽象類不穩(wěn)定变屁,還通過繼承的寫法來實現(xiàn)業(yè)務眼俊,那是得不償失的。
- 重用性要求較高的場景粟关,設計的顆粒度越細疮胖,則被重用的可能性就越大,而采用繼承的方式則受父類的影響闷板。不可能出現(xiàn)太細的粒度澎灸。
4.3注意事項
橋接模式的意圖是對變化對封裝,盡量把可能變化對因素封裝到更細更小的邏輯單元遮晚,避免風險擴散性昭。而不能只要用繼承的就換成橋接。