设计模式之适配器模式
名词解释:
适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
使用场景:
系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。(用最简单的一句话说就是,有两个比较相似的类,但是具有不同的接口时要使用它,也就是在双方都不太容易修改的时候再使用适配器模式适配。)
必要元素:
1.客户所期待的接口,目标可以是具体的或抽象的类,也可以是接口;
2.要适配的类;
3.一个用于包装需要适配类的类。
上例子:
Target类(即客户需要的类,可以是一般的类或者抽象类,也可以是接口):
class Target { public virtual void Request() { Console.WriteLine("普通请求!"); } }
Adaptee类,需要适配的类:
class Adaptee { public void SpecificRequest() { Console.WriteLine("特殊情况!"); } }
Adapter,用于包装适配类的类:
class Adapter:Target { private Adaptee adaptee = new Adaptee(); public override void Request() { adaptee.SpecificRequest(); } }
关键点就在这个Adapter类,其中放了一个Adaptee类的实例,由于Adaptee的方法名称是SpecificRequest,而客户希望的是Request方法,所以我们需要在Adapter中重写Request,在Request中访问Adaptee的SpecificRequest方法即可。
调用它吧:
Target target = new Adapter(); target.Request(); Console.Read();
实例化一个封装类的对象,然后调用方法即可。