日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

java设计模式6--适配器模式(Adapter )

發(fā)布時(shí)間:2025/3/21 asp.net 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java设计模式6--适配器模式(Adapter ) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文地址:http://www.cnblogs.com/archimedes/p/java-adapter-pattern.html,轉(zhuǎn)載請(qǐng)注明源地址。

適配器模式(別名:包裝器)

將一個(gè)類(lèi)的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類(lèi)可以一起工作。

概述

適配器模式是將一個(gè)類(lèi)的接口(被適配者)轉(zhuǎn)換成客戶希望的另外一個(gè)接口(目標(biāo))的成熟模式,該模式中涉及有目標(biāo)、被適配者和適配器。適配器模式的關(guān)鍵是建立一個(gè)適配器,這個(gè)適配器實(shí)現(xiàn)了目標(biāo)接口并包含有被適配者的引用。

適用性

1.你想使用一個(gè)已經(jīng)存在的類(lèi),而它的接口不符合你的需求。

2.你想創(chuàng)建一個(gè)可以復(fù)用的類(lèi),該類(lèi)可以與其他不相關(guān)的類(lèi)或不可預(yù)見(jiàn)的類(lèi)(即那些接口可能不一定兼容的類(lèi))協(xié)同工作。

3.(僅適用于對(duì)象Adapter)你想使用一些已經(jīng)存在的子類(lèi),但是不可能對(duì)每一個(gè)都進(jìn)行子類(lèi)化以匹配它們的接口。對(duì)象適配器可以適配它的父類(lèi)接口。

參與者

1.Target 定義Client使用的與特定領(lǐng)域相關(guān)的接口。

2.Client 與符合Target接口的對(duì)象協(xié)同。

3.Adaptee 定義一個(gè)已經(jīng)存在的接口,這個(gè)接口需要適配。

4.Adapter 對(duì)Adaptee的接口與Target接口進(jìn)行適配

適配器模式的結(jié)構(gòu)與使用

模式的結(jié)構(gòu)中包括三種角色:

  • 目標(biāo)(Target)

  • 被適配者(Adaptee)

  • 適配器(Adapter)?

模式的UML類(lèi)圖:

實(shí)戰(zhàn)部分

用戶已有一個(gè)兩相的插座,但最近用戶又有了一個(gè)新的三相插座。用戶現(xiàn)在已經(jīng)有一臺(tái)洗衣機(jī)和一臺(tái)電視機(jī),洗衣機(jī)按著三相插座的標(biāo)準(zhǔn)配有三相插頭,而電視機(jī)按著兩相插座的標(biāo)準(zhǔn)配有兩相插頭。現(xiàn)在用戶想用新的三相插座來(lái)使用洗衣機(jī)和電視機(jī)。

1.目標(biāo)(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.應(yīng)用?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.應(yīng)用?Application.java_2

class Wash implements ThreeElectricOutlet{ String name;Wash(){name="黃河洗衣機(jī)";}Wash(String s){name=s;}public void connectElectricCurrent(){turnOn();}public void turnOn(){System.out.println(name+"開(kāi)始洗衣物。");} }

4.應(yīng)用?Application.java_3

class TV implements TwoElectricOutlet{ String name;TV(){name="長(zhǎng)江電視機(jī)";}TV(String s){name=s;}public void connectElectricCurrent(){turnOn();}public void turnOn(){System.out.println(name+"開(kāi)始播放節(jié)目。");} }

適配器模式的優(yōu)點(diǎn)

?目標(biāo)(Target)和被適配者(Adaptee)是完全解耦的關(guān)系。

?適配器模式滿足“開(kāi)-閉原則”。當(dāng)添加一個(gè)實(shí)現(xiàn)Adaptee接口的新類(lèi)時(shí),不必修改Adapter,Adapter就能對(duì)這個(gè)新類(lèi)的實(shí)例進(jìn)行適配。

您還可能感興趣:

java設(shè)計(jì)模式系列:

java設(shè)計(jì)模式5--原型模式(Prototype)?

java設(shè)計(jì)模式4--建造者模式(Builder)

java設(shè)計(jì)模式3--單例模式(Singleton)

java設(shè)計(jì)模式2--抽象工廠模式(Abstract Factory)

java設(shè)計(jì)模式1--工廠方法模式(Factory Method)?

java設(shè)計(jì)模式0--設(shè)計(jì)模式簡(jiǎn)介

總結(jié)

以上是生活随笔為你收集整理的java设计模式6--适配器模式(Adapter )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。