Java適配器模式和橋接模式都是面向?qū)ο缶幊讨谐R姷脑O(shè)計(jì)模式,本篇文章將對這兩種模式進(jìn)行詳細(xì)介紹。
適配器模式
適配器模式是一種將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口的設(shè)計(jì)模式。
public interface Target { void execute(); } public class Adaptee { public void doSomething() { System.out.println("doSomething..."); } } public class Adapter implements Target { private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } public void execute() { adaptee.doSomething(); } } public class Client { public static void main(String[] args) { Adaptee adaptee = new Adaptee(); Target target = new Adapter(adaptee); target.execute(); } }
在適配器模式中,我們通過一個(gè)中間的適配器類將一個(gè)原始類的接口適配成客戶端期望的接口,這樣就可以在不改變原始類接口的情況下,讓客戶端使用該類。
橋接模式
橋接模式是一種同時(shí)將抽象部分與它的實(shí)現(xiàn)部分分離開來的設(shè)計(jì)模式。
public interface Implementor { void operationImp(); } public class ConcreteImplementorA implements Implementor { public void operationImp() { System.out.println("ConcreteImplementorA operation"); } } public class ConcreteImplementorB implements Implementor { public void operationImp() { System.out.println("ConcreteImplementorB operation"); } } public abstract class Abstraction { protected Implementor implementor; public Abstraction(Implementor implementor) { this.implementor = implementor; } public abstract void operation(); } public class RefinedAbstraction extends Abstraction { public RefinedAbstraction(Implementor implementor) { super(implementor); } public void operation() { System.out.println("RefinedAbstraction operation"); implementor.operationImp(); } } public class Client { public static void main(String[] args) { Implementor implementor = new ConcreteImplementorA(); Abstraction abstraction = new RefinedAbstraction(implementor); abstraction.operation(); } }
在橋接模式中,我們將一個(gè)抽象部分與其實(shí)現(xiàn)部分分離開來,使得它們可以相互獨(dú)立地變化。這樣,抽象與實(shí)現(xiàn)部分可以各自擴(kuò)展,不會(huì)相互影響。
適配器模式和橋接模式都是非常常用的設(shè)計(jì)模式,在實(shí)際開發(fā)中都有廣泛的應(yīng)用。