设计模式---适配器模式

来源:互联网 发布:三星专用下载软件 编辑:程序博客网 时间:2024/06/03 17:25


结构型:用于描述如何实现类和对象的组合,从而达到实现一定的功能的目的。

我在上一篇全局观里面已经将这些分好类了,大家可以看看:http://blog.csdn.net/tgbyn/article/details/66479852


内容:

第一个:适配器模式 【使用频率:★★★★☆

1、定义:

适配器模式:将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作。

理解:自己去外国出差,戴着咱们自己的电脑,结果没电了,而咱们用的电压跟外国用的电压不一样,无法充电。而电源适配器可以转换成我们笔记本想用的电压,从而给我们的电脑充电。适配器就好比我们现在的电源适配器。

2、分类:对象适配器和类适配器

类适配器模式和对象适配器模式最大的区别:

在于适配器和适配者之间的关系不同,对象适配器没送货ihzong适配器和适配者之间是关联关系;而类适配器模式中适配器和适配者是继承关系。

类适配器:继承自己实现的类,一般是多重继承,而Java和C#语言不支持多重继承,因此受到限制。

3、对象适配器结构图:




组成:

Target(目标抽象类):这是客户期待的接口,目标可以是具体的或抽象的类,也可以是接口。

Adapter(适配器类):适配器模式的核心,作为一个转换器,对Adaptee和Adaptee进行适配。

Adaptee(适配者类):被适配的角色,包含了客户希望使用的业务方法。

3、代码

  class Program    {        static void Main(string[] args)        {            Player b = new Forwards("巴蒂尔");            b.Attack();            Player m = new Guards("麦克格雷迪");            m.Attack();            //Player ym = new Center("姚明");            Player ym = new Translator("姚明");            ym.Attack();            ym.Defense();            Console.Read();        }    }    //篮球运动员    abstract class Player    {        protected string name;        public Player(string name)        {            this.name = name;        }        public abstract void Attack();        public abstract void Defense();    } //外籍中锋    class ForeignCenter    {        private string name;        public string Name        {            get { return name; }            set { name = value; }        }        public void 进攻()        {            Console.WriteLine("外籍中锋 {0} 进攻", name);        }        public void 防守()        {            Console.WriteLine("外籍中锋 {0} 防守", name);        }    }    //翻译者    class Translator : Player    {        private ForeignCenter wjzf = new ForeignCenter();        public Translator(string name)            : base(name)        {            wjzf.Name = name;        }        public override void Attack()        {            wjzf.进攻();        }        public override void Defense()        {            wjzf.防守();        }    }
4、总结:

适配器模式将现有接口转化为客户类所期望的接口,实现了,对现有类的复用。

装饰着模式,适配器模式,外观模式区别:

装饰着模式:并不改变接口,而是将一个一个接口进行装饰,也就是添加新的功能。

适配器模式:经常用在需要第三方协同的场合,设法将你与第三方隔离开。一个接口通过一个适配间接转换为另一个接口

外观模式:提供一个整洁一致的接口给客户端。


0 0