java设计模式6--适配器模式(Adapter )
本文地址:http://www.cnblogs.com/archimedes/p/java-adapter-pattern.html,轉載請注明源地址。
適配器模式(別名:包裝器)
將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
概述
適配器模式是將一個類的接口(被適配者)轉換成客戶希望的另外一個接口(目標)的成熟模式,該模式中涉及有目標、被適配者和適配器。適配器模式的關鍵是建立一個適配器,這個適配器實現(xiàn)了目標接口并包含有被適配者的引用。
適用性
1.你想使用一個已經(jīng)存在的類,而它的接口不符合你的需求。
2.你想創(chuàng)建一個可以復用的類,該類可以與其他不相關的類或不可預見的類(即那些接口可能不一定兼容的類)協(xié)同工作。
3.(僅適用于對象Adapter)你想使用一些已經(jīng)存在的子類,但是不可能對每一個都進行子類化以匹配它們的接口。對象適配器可以適配它的父類接口。
參與者
1.Target 定義Client使用的與特定領域相關的接口。
2.Client 與符合Target接口的對象協(xié)同。
3.Adaptee 定義一個已經(jīng)存在的接口,這個接口需要適配。
4.Adapter 對Adaptee的接口與Target接口進行適配
適配器模式的結構與使用
模式的結構中包括三種角色:
-
目標(Target)
-
被適配者(Adaptee)
-
適配器(Adapter)?
模式的UML類圖:
實戰(zhàn)部分
用戶已有一個兩相的插座,但最近用戶又有了一個新的三相插座。用戶現(xiàn)在已經(jīng)有一臺洗衣機和一臺電視機,洗衣機按著三相插座的標準配有三相插頭,而電視機按著兩相插座的標準配有兩相插頭。現(xiàn)在用戶想用新的三相插座來使用洗衣機和電視機。
1.目標(Target) :?ThreeElectricOutlet.java
public interface ThreeElectricOutlet{public abstract void connectElectricCurrent(); }2.被適配者(Adaptee):?TwoElectricOutlet.java
public interface TwoElectricOutlet{public abstract void connectElectricCurrent(); }3.適配器(Adapter):?TreeElectricAdapter.java
public class TreeElectricAdapter implements ThreeElectricOutlet{TwoElectricOutlet outlet;TreeElectricAdapter(TwoElectricOutlet outlet){this.outlet=outlet;}public void connectElectricCurrent(){outlet.connectElectricCurrent();} }4.應用?Application.java_1
public class Application{public static void main(String args[]){ThreeElectricOutlet outlet; Wash wash=new Wash(); outlet=wash; System.out.println("使用三相插座接通電流:");outlet.connectElectricCurrent(); TV tv=new TV(); TreeElectricAdapter adapter=new TreeElectricAdapter(tv);outlet=adapter; System.out.println("使用三相插座接通電流:");outlet.connectElectricCurrent(); } }4.應用?Application.java_2
class Wash implements ThreeElectricOutlet{ String name;Wash(){name="黃河洗衣機";}Wash(String s){name=s;}public void connectElectricCurrent(){turnOn();}public void turnOn(){System.out.println(name+"開始洗衣物。");} }4.應用?Application.java_3
class TV implements TwoElectricOutlet{ String name;TV(){name="長江電視機";}TV(String s){name=s;}public void connectElectricCurrent(){turnOn();}public void turnOn(){System.out.println(name+"開始播放節(jié)目。");} }適配器模式的優(yōu)點
?目標(Target)和被適配者(Adaptee)是完全解耦的關系。
?適配器模式滿足“開-閉原則”。當添加一個實現(xiàn)Adaptee接口的新類時,不必修改Adapter,Adapter就能對這個新類的實例進行適配。
您還可能感興趣:
java設計模式系列:
java設計模式5--原型模式(Prototype)?
java設計模式4--建造者模式(Builder)
java設計模式3--單例模式(Singleton)
java設計模式2--抽象工廠模式(Abstract Factory)
java設計模式1--工廠方法模式(Factory Method)?
java設計模式0--設計模式簡介
總結
以上是生活随笔為你收集整理的java设计模式6--适配器模式(Adapter )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java设计模式5--原型模式(Prot
- 下一篇: ASP.NET MVC案例教程(基于AS