极速理解设计模式系列:6.适配器模式(Adapter Pattern)
2011-09-15 10:23
741 查看
四个角色:目标抽象类角色(Target)、目标对象角色(Adapter)、源对象角色(Adaptee)、客户端角色(Client)
目标抽象类角色(Target):定义需要实现的目标接口
目标对象角色(Adapter):调用另外一个源对象,并且转换(适配)为需要的目标对象。
源对象角色(Adaptee):因为提供的功能不能满足现状,需要转换的源对象。
客户端角色(Client):调用目标对象,对源对象进行加工。
实现思路:首先取得需要转换的源对象,然后通过Adapter对源对象进行加工得到目标对象。
[b] 类图:[/b]
应用场景:在第三方类库中有一个源对象可以实现判断用户是否属于成人、是几个字的名字,但是需要的功能是显示用户信息,且不能更改第三方类库。
分析:现在的系统中需要的是显示用户信息的功能,在这里我们通过适配器模式调用第三方的对象,在目标对象中显示用户信息处理,并提供接口给客户端。
下面我们在控制台程序去演示一下如何使用Adapter Pattern:
一、目标抽象类角色(Target)
二、目标对象角色(Adapter)
三、源对象角色(Adaptee)
四、客户端角色(Client)
如需源码请点击 AdapterPattern.rar 下载。
目标抽象类角色(Target):定义需要实现的目标接口
目标对象角色(Adapter):调用另外一个源对象,并且转换(适配)为需要的目标对象。
源对象角色(Adaptee):因为提供的功能不能满足现状,需要转换的源对象。
客户端角色(Client):调用目标对象,对源对象进行加工。
实现思路:首先取得需要转换的源对象,然后通过Adapter对源对象进行加工得到目标对象。
[b] 类图:[/b]
应用场景:在第三方类库中有一个源对象可以实现判断用户是否属于成人、是几个字的名字,但是需要的功能是显示用户信息,且不能更改第三方类库。
分析:现在的系统中需要的是显示用户信息的功能,在这里我们通过适配器模式调用第三方的对象,在目标对象中显示用户信息处理,并提供接口给客户端。
下面我们在控制台程序去演示一下如何使用Adapter Pattern:
一、目标抽象类角色(Target)
//Target(目标抽象类角色) interface ITarget { void ShowInfo(); }
二、目标对象角色(Adapter)
//Adapter(目标对象角色) public class TargetInfoAdapter:ITarget { SourceInfo sinfo; public TargetInfoAdapter(SourceInfo sourceinfo) { this.sinfo = sourceinfo; } public void ShowInfo() { Console.WriteLine(sinfo.Name + ":" + sinfo.Age + "岁 " + sinfo.IsAdult() + " " + sinfo.NumberOfName()); } }
三、源对象角色(Adaptee)
//Adaptee(源对象角色) public class SourceInfo { public string Name { get; set; } public int Age { get; set; } public string IsAdult() { return Age > 17 ? "成年" : "未成年"; } public string NumberOfName() { return Name.Length.ToString() + "个字名!"; } }
四、客户端角色(Client)
//Client(客户端角色) class Program { static void Main(string[] args) { //取得源对象 SourceInfo sinfo = new SourceInfo() { Name="小明",Age=15 }; //通过适配器转化源对象为目标对象。 ITarget target =new TargetInfoAdapter(sinfo); target.ShowInfo(); Console.ReadLine(); } }
如需源码请点击 AdapterPattern.rar 下载。
相关文章推荐
- 极速理解设计模式系列:6.适配器模式(Adapter Pattern)
- 极速理解设计模式系列:4.抽象工厂模式(Abstract Factory Pattern)
- 极速理解设计模式系列:13.外观模式(Facade Pattern)
- 极速理解设计模式系列:13.外观模式(Facade Pattern)
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 极速理解设计模式系列:1.建造者模式(Builder Pattern)
- 极速理解设计模式系列:15.中介者模式(Mediator Pattern)
- 极速理解设计模式系列:1.建造者模式(Builder Pattern)
- 极速理解设计模式系列:15.中介者模式(Mediator Pattern)
- 极速理解设计模式系列:16.迭代器模式(Iterator Pattern)
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 极速理解设计模式系列:16.迭代器模式(Iterator Pattern)
- 极速理解设计模式系列:17.命令模式(Command Pattern)
- 极速理解设计模式系列:17.命令模式(Command Pattern)
- 极速理解设计模式系列:1.建造者模式(Builder Pattern)
- 极速理解设计模式系列:21.简单工厂模式(Simple Factory Pattern)
- 极速理解设计模式系列:21.简单工厂模式(Simple Factory Pattern)
- 极速理解设计模式系列:23.装饰器模式(Decorator Pattern)
- 极速理解设计模式系列:12.责任链模式(Chain of Responsibility Pattern)
- 极速理解设计模式系列:23.装饰器模式(Decorator Pattern)