zoukankan      html  css  js  c++  java
  • 《大话设计模式》学习笔记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 基础中的字符串
    Java中的基本数据类型
    js 实现焦点图轮播效果和 jquery实现焦点图轮播效果
    Html中 value 和 name 属性的作用
    分别用js 和 html/css实现下拉菜单特效
    divide-conquer-combine(4.1 from the introduction to algorithm)
    1063. Set Similarity (25)
    1085. Perfect Sequence (25)
    1015. Reversible Primes (20)
    1057. Stack (30)
  • 原文地址:https://www.cnblogs.com/walden1024/p/4510052.html
Copyright © 2011-2022 走看看