码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式--结构模式--适配者模式

时间:2020-03-18 23:56:38      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:nts   苹果手机   目标   工作   模式   充电   androi   dap   isp   

一、基本概念

  1、适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作。

  2、角色:

    A:Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配。

    B:Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。

    C:Adapter(适配器类):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,使二者产生联系。

    D:Client(客户端类) 测试使用。

  3、适配器分为对象适配,类适配。具体看代码

二、例子

  1、类适配器模式

    A:Adaptee(适配者类):

技术图片
 1 package comm.pattern.struct.adapter;
 2 
 3 /**
 4  * 
 5  * @Title: IAppleAdaptee.java
 6  * @Package: comm.pattern.struct.adapter
 7  * @Description: 苹果充电器
 8  * @author yangzhancheng
 9  * @2020年3月18日:下午8:42:11
10  *
11  */
12 public class AppleAdaptee {
13 
14     //充电线接口
15     public void apple(){
16         System.out.println("1.能给苹果手机充电...");
17     }
18 }
View Code

    B:Target(目标抽象类):

技术图片
 1 package comm.pattern.struct.adapter;
 2 
 3 /**
 4  * 
 5  * @Title: IAndroidPhoneTarget.java
 6  * @Package: comm.pattern.struct.adapter
 7  * @Description: Target(目标抽象类)给所有手机充电
 8  * @author yangzhancheng
 9  * @2020年3月18日:下午8:29:12
10  *
11  */
12 
13 public interface IPhoneTarget {
14     
15     //给苹果充电
16     public void apple();
17     
18     //给小米手机充电
19     public void mi();
20     
21     //给华为手机充电
22     public void huwei();
23     
24 }
View Code

    C:Adapter(适配器类):

技术图片
 1 package comm.pattern.struct.adapter;
 2 
 3 /**
 4  * 
 5  * @Title: ApppleAdapter.java
 6  * @Package: comm.pattern.struct.adapter
 7  * @Description: 适配者
 8  * @author yangzhancheng
 9  * @2020年3月18日:下午8:49:39
10  *
11  */
12 public class PhoneAdapter extends AppleAdaptee implements IPhoneTarget{
13     
14     //给苹果充电
15     public void apple(){
16         super.apple();
17     }
18     
19     //给小米手机充电
20     public void mi(){
21         System.out.println("2.能给小米手机充电...");
22     }
23     
24     //给华为手机充电
25     public void huwei(){
26         System.out.println("3.能给华为手机充电...");
27     }
28 
29 }
View Code

    D:Client(客户端类) 测试使用。

技术图片
 1 package comm.pattern.struct.adapter;
 2 /**
 3  * 
 4  * @Title: Client.java
 5  * @Package: comm.pattern.struct.adapter
 6  * @Description: 客户端
 7  * @author yangzhancheng
 8  * @2020年3月18日:下午8:49:23
 9  *
10  */
11 public class Client {
12 
13     public static void main(String[] args) {
14         
15         IPhoneTarget apppleAdapter = new PhoneAdapter();
16         apppleAdapter.apple();
17         apppleAdapter.mi();
18         apppleAdapter.huwei();
19 
20     }
21 
22 }
View Code

运行结果

1.能给苹果手机充电...
2.能给小米手机充电...
3.能给华为手机充电...

 

  2、对象适配器模式

    A:Adaptee(适配者类):

技术图片
 1 package comm.pattern.struct.adapter;
 2 
 3 /**
 4  * 
 5  * @Title: IAppleAdaptee.java
 6  * @Package: comm.pattern.struct.adapter
 7  * @Description: 苹果充电器
 8  * @author yangzhancheng
 9  * @2020年3月18日:下午8:42:11
10  *
11  */
12 public class AppleAdaptee {
13 
14     //充电线接口
15     public void apple(){
16         System.out.println("1.能给苹果手机充电...");
17     }
18 }
View Code

    B:Target(目标抽象类):

技术图片
 1 package comm.pattern.struct.adapter;
 2 
 3 /**
 4  * 
 5  * @Title: IAndroidPhoneTarget.java
 6  * @Package: comm.pattern.struct.adapter
 7  * @Description: Target(目标抽象类)给所有手机充电
 8  * @author yangzhancheng
 9  * @2020年3月18日:下午8:29:12
10  *
11  */
12 
13 public interface IPhoneTarget {
14     
15     //给苹果充电
16     public void apple();
17     
18     //给小米手机充电
19     public void mi();
20     
21     //给华为手机充电
22     public void huwei();
23     
24 }
View Code

    C:Adapter(适配器类):

技术图片
 1 package comm.pattern.struct.adapter;
 2 
 3 /**
 4  * 
 5  * @Title: ApppleAdapter.java
 6  * @Package: comm.pattern.struct.adapter
 7  * @Description: 适配者
 8  * @author yangzhancheng
 9  * @2020年3月18日:下午8:49:39
10  *
11  */
12 public class PhoneAdapterExt  implements IPhoneTarget{
13     
14     private AppleAdaptee appleAdaptee;
15     
16     public PhoneAdapterExt(AppleAdaptee appleAdaptee){
17         this.appleAdaptee = appleAdaptee;
18     }
19     
20     //给苹果充电
21     public void apple(){
22         appleAdaptee.apple();
23     }
24     
25     //给小米手机充电
26     public void mi(){
27         System.out.println("2.能给小米手机充电...");
28     }
29     
30     //给华为手机充电
31     public void huwei(){
32         System.out.println("3.能给华为手机充电...");
33     }
34 
35 }
View Code

    D:Client(客户端类) 测试使用:

技术图片
 1 package comm.pattern.struct.adapter;
 2 /**
 3  * 
 4  * @Title: Client.java
 5  * @Package: comm.pattern.struct.adapter
 6  * @Description: 客户端
 7  * @author yangzhancheng
 8  * @2020年3月18日:下午8:49:23
 9  *
10  */
11 public class Client {
12 
13     public static void main(String[] args) {
14 
15         IPhoneTarget apppleAdapterExt = new PhoneAdapterExt(new AppleAdaptee());
16         apppleAdapterExt.apple();
17         apppleAdapterExt.mi();
18         apppleAdapterExt.huwei();
19 
20     }
21 
22 }
View Code

运行结果

1.能给苹果手机充电...
2.能给小米手机充电...
3.能给华为手机充电...

 

三、总结。

     后续补充。

 

设计模式--结构模式--适配者模式

标签:nts   苹果手机   目标   工作   模式   充电   androi   dap   isp   

原文地址:https://www.cnblogs.com/fating/p/12521156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!