(8)适配器模式

它是这样被定义的:

将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.

 

Adapter的结构图:


Adapter的代码:

 

class Target
    {
        public virtual void Request()
        {
            Console.WriteLine("普通请求!");
        }
    }

class Adapter:Target 
    {
        private Adaptee adaptee = new Adaptee();//建立一个私有的Adaptee对象

        public override void Request()
        {
            adaptee.SpecificRequest();//这样就可以把表面上调用Request()方法变成实际调用SpecificRequest()
        }
    }

class Adaptee
    {
        public void SpecificRequest()
        {
            Console.WriteLine("特殊请求!");
        }
    }

客户端代码:

static void Main(string[] args)
        {
            Target target = new Adapter();
            target.Request();
            Console.Read();
        }


何时使用?

系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围外的一个原有对象与某个接口匹配.适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况.在双方都不太容易修改的时候再使用适配器模式适配,但我们应该明白,并不是接口不同就使用适配器模式!

在设计前期,如果接口不相同,首先不应该考虑用适配器,而是应该考虑通过重构统一接口.

两种类型:

类适配器模式和对象适配器模式

学适配器模式的最大收获是要学会:防患于未然。事前控制好过事后弥补,一个主动一个被动。


你可能感兴趣的:((8)适配器模式)