极速理解设计模式系列:6.适配器模式(Adapter Pattern)

简介:

四个角色:目标抽象类角色(Target)、目标对象角色(Adapter)、源对象角色(Adaptee)、客户端角色(Client)

        目标抽象类角色(Target):定义需要实现的目标接口

        目标对象角色(Adapter):调用另外一个源对象,并且转换(适配)为需要的目标对象。

        源对象角色(Adaptee):因为提供的功能不能满足现状,需要转换的源对象。

        客户端角色(Client):调用目标对象,对源对象进行加工。

         实现思路:首先取得需要转换的源对象,然后通过Adapter对源对象进行加工得到目标对象。

 类图:

        应用场景:在第三方类库中有一个源对象可以实现判断用户是否属于成人、是几个字的名字,但是需要的功能是显示用户信息,且不能更改第三方类库。

        分析:现在的系统中需要的是显示用户信息的功能,在这里我们通过适配器模式调用第三方的对象,在目标对象中显示用户信息处理,并提供接口给客户端。

        下面我们在控制台程序去演示一下如何使用Adapter Pattern:

        一、目标抽象类角色(Target)

 

 
  1. //Target(目标抽象类角色) 
  2. interface ITarget 
  3.     void ShowInfo(); 

        二、目标对象角色(Adapter)

 

 
  1. //Adapter(目标对象角色) 
  2. public class TargetInfoAdapter:ITarget 
  3.     SourceInfo sinfo; 
  4.     public TargetInfoAdapter(SourceInfo sourceinfo) 
  5.     { 
  6.         this.sinfo = sourceinfo; 
  7.     } 
  8.     public void ShowInfo() 
  9.     { 
  10.         Console.WriteLine(sinfo.Name + ":" + sinfo.Age + "岁   " + sinfo.IsAdult() + "   " + sinfo.NumberOfName()); 
  11.     } 

        三、源对象角色(Adaptee)

 

 
  1. //Adaptee(源对象角色) 
  2. public class SourceInfo 
  3.     public string Name { get; set; } 
  4.     public int Age { get; set; } 
  5.     public string IsAdult() 
  6.     { 
  7.         return Age > 17 ? "成年" : "未成年"
  8.     } 
  9.     public string NumberOfName() 
  10.     { 
  11.         return Name.Length.ToString() + "个字名!"
  12.     } 

        四、客户端角色(Client)

 

 
  1. //Client(客户端角色) 
  2. class Program 
  3.     static void Main(string[] args) 
  4.     { 
  5.         //取得源对象 
  6.         SourceInfo sinfo = new SourceInfo() { Name="小明",Age=15 }; 
  7.         //通过适配器转化源对象为目标对象。 
  8.         ITarget target =new TargetInfoAdapter(sinfo); 
  9.         target.ShowInfo(); 
  10.         Console.ReadLine(); 
  11.     } 

        如需源码请点击 AdapterPattern.rar 下载。


本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/826968


相关文章
|
19小时前
|
设计模式 Java API
重构旧代码的秘诀:用设计模式 - 适配器模式(Adapter)给Java项目带来新生
【4月更文挑战第7天】适配器模式是解决接口不兼容问题的结构型设计模式,通过引入适配器类实现目标接口并持有不兼容类引用,实现旧代码与新接口的协作。适用于处理兼容性问题、整合遗留代码和集成第三方库。应用时,识别不兼容接口,创建适配器类转换方法调用,然后替换原有引用。注意保持适配器简单、使用组合和考虑扩展性。过度使用可能导致系统复杂和维护成本增加,应谨慎使用。
|
19小时前
|
设计模式 Java 中间件
23种设计模式,适配器模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目标是让原本由于接口不匹配而不能一起工作的类可以一起工作。适配器模式主要有两种形式:类适配器和对象适配器。类适配器模式通过继承来实现适配,而对象适配器模式则通过组合来实现
38 4
|
19小时前
|
设计模式 Java Go
【设计模式】适配器模式怎么理解?
【设计模式】适配器模式怎么理解?
8 1
|
19小时前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~结构型]不兼容结构的协调——适配器模式
[设计模式Java实现附plantuml源码~结构型]不兼容结构的协调——适配器模式
|
19小时前
|
设计模式 Go
[设计模式 Go实现] 结构型~适配器模式
[设计模式 Go实现] 结构型~适配器模式
|
19小时前
|
设计模式 Java
【设计模式系列笔记】适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一种接口。它允许原本由于接口不匹配而无法一起工作的类能够协同工作。适配器模式通常涉及一个称为适配器的类,它充当两个不兼容接口之间的桥梁。
40 6
|
19小时前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
16 1
|
20小时前
|
设计模式 Java 数据库
小谈设计模式(18)—适配器模式
小谈设计模式(18)—适配器模式
|
19小时前
|
设计模式 算法 API
适配器模式:C++设计模式中的瑞士军刀
适配器模式:C++设计模式中的瑞士军刀
49 0
|
19小时前
|
设计模式
设计模式之适配器模式
设计模式之适配器模式

热门文章

最新文章