适配器模式(Adapter Pattern)
以下内容是我和小组的兄弟学习设计模式我做的课件,我整理出来和大家分享,有不妥之处敬请指出. 上次做的桥接模式(Bridge),这次是适配器模式(Adapter). 概述: 在软件开发过程中,我们要经常要复用我们以前开发的一些“现存对象”,但是这些“现存对象”并不能满足我们新的应用环境。怎样才能良好的复用这些对象,以满足我们的应用环境,这就是适配器(Adapter)所要解决的问题。 意图: 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 ——《设计模式》GOF 生活中的例子: 在现实生活中,像这种适配器我们经常见到,而且还是经常使用它,如:手机(深信大家都见过),我们手机在充电的时候,不可能直接在220V电源上直接充电,而是手机“充电器”进行转换成手机需要的电压才可以正常充电,否则就不可以完成充电,这个“充电器”就起到了适配的作用。 1.类的Adapter模式结构图 类结构图: 代码实现: 1namespace Adapter_Pattern
2{ 3 public interface ITarget 4 { 5 void GetPower(); 6 } 7 /**//// <summary> 8 /// 220V电源类; 9 /// </summary> 10 public class Power 11 { 12 /**//// <summary> 13 /// 从电源中得到220V的电压; 14 /// </summary> 15 public void GetPoer220V() 16 { 17 18 } 19 } 20 /**//// <summary> 21 /// 适配器类(充电器); 22 /// </summary> 23 public class Adapter : Power, ITarget 24 { 25 /**//// <summary> 26 /// 得到想要电压; 27 /// </summary> 28 public void GetPower() 29 { 30 this.GetPoer220V(); 31 Console.WriteLine("得到手机的充电电压!"); 32 } 33 } 客户端调用: 1namespace Adapter_Pattern
2{ 3 class Program 4 { 5 /**//// <summary> 6 /// 这里相当于是手机; 7 /// </summary> 8 /// <param name="args"></param> 9 static void Main(string[] args) 10 { 11 Console.Write("手机:"); 12 ITarget Target = new Adapter(); 13 Target.GetPower(); 14 Console.Read(); 15 } 16 } 17}
1namespace Adapter_Pattern_Object_
2{ 3 public interface ITarget 4 { 5 void GetPower(); 6 } 7 /**//// <summary> 8 /// 220V电源类 9 /// </summary> 10 public class Power 11 { 12 /**//// <summary> 13 /// 得到220V电压; 14 /// </summary> 15 public void GetPoer220V() 16 { 17 //在这是220V的电压; 18 } 19 } 20 /**//// <summary> 21 /// 适配器类(充电器) 22 /// </summary> 23 public class Adapter : ITarget 24 { 25 Power power; 26 /**//// <summary> 27 /// 适配器的构造函数; 28 /// </summary> 29 /// <param name="power">要适配的电压</param> 30 public Adapter(Power power) 31 { 32 this.power = power; 33 } 34 /**//// <summary> 35 /// 得到想要的电压; 36 /// </summary> 37 public void GetPower() 38 { 39 power.GetPoer220V(); 40 Console.WriteLine("得到手机的充电电压!"); 41 } 42 } 43} 44
1namespace Adapter_Pattern_Object_
2{ 3 class Program 4 { 5 /**//// <summary> 6 /// 这里相当于手机; 7 /// </summary> 8 /// <param name="args"></param> 9 static void Main(string[] args) 10 { 11 Console.Write("手机:"); 12 13 Power power=new Power(); 14 ITarget Target = new Adapter(power); 15 Target.GetPower(); 16 17 Console.Read(); 18 } 19 } 20}
|
|