• 《大话设计模式》学习笔记13:适配器模式


      

      

    篮球翻译示例:

      

    1.Target:

        public abstract class Player
        {
            protected string name;
            public Player(string name)
            {
                this.name = name;
            }
            public abstract void Attack();
            public abstract void Defense();
        }

    2.具体球员类(以前锋为例):

        public class Forwards:Player
        {
            public Forwards(string name):base(name)
            {
    
            }
            public override void Attack()
            {
                Console.WriteLine("前锋 {0} 进攻",name);
            }
    
            public override void Defense()
            {
                Console.WriteLine("前锋 {0} 防守", name);
            }
        }

    3.Adaptee:

        public class ForeignCenter
        {
            public string Name { get; set; }//故意用属性而不是构造方法来区别其他球员类
            public void 进攻()
            {
                Console.WriteLine("外籍中锋 {0} 进攻", Name);
            }
            public void 防守()
            {
                Console.WriteLine("外籍中锋 {0} 防守", Name);
            }
        }

    4.Adapter:

        public class Translator:Player
        {
            private ForeignCenter foreignCenter = new ForeignCenter();
            public Translator(string name):base(name)
            {
                foreignCenter.Name = name;
            }
            public override void Attack()
            {
                foreignCenter.进攻();
            }
    
            public override void Defense()
            {
                foreignCenter.防守();
            }
        }

    5.客户端代码:

        class Program
        {
            static void Main(string[] args)
            {
                Player battier = new Forwards("巴蒂尔");
                battier.Attack();
    
                Player yaoMing = new Translator("姚明");
                yaoMing.Defense();
            }
        }

      系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。

      在GoF的设计模式中,适配器模式有两种类型即类适配器模式和对象适配器模式,类适配器模式通过多重继承对一个借口与另一个接口进行匹配,但C#、VB.NET、JAVA等语言都不支持多重继承,所以上面所讲的是对象适配器。

  • 相关阅读:
    Java ListIterator(迭代器)
    java 异常 throw
    java iterator(迭代器)
    java list
    type Iterator does not take parameters
    Java 容器的打印
    java 添加一组元素
    Java 容器的基本概念
    软件
    java 学习网站
  • 原文地址:https://www.cnblogs.com/walden1024/p/4510052.html
Copyright © 2020-2023  润新知