适配器模式——在NBA我需要翻译

简介: 适配器模式——在NBA我需要翻译

  适配器模式(Adapter)定义:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。



使用场景

  • 复用一些现存的类,但接口又于复用环境不一致
  • 双方都不太容易修改的时候

  代码背景: 姚明去美国打NBA,但是不会英语无法和教练球员沟通,翻译就起到了适配器的作用。

球员类:

    abstract class Player
    {
        protected string name;
        public Player(string name)
        {
            this.name = name;
        }
        public abstract void Attack();//进攻
        public abstract void Defense();//防守
    }

前锋:用英语沟通战术,姚明不知道Attack()和Defense()是什么意思

    //前锋
    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);
        }
    }

外籍中锋(姚明):用汉语沟通战术,只会说“进攻”、“防守”

    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()//翻译者将Attack翻译为进攻,告诉了外籍中锋
        {
            wjzf.进攻();
        }
        public override void Defense()//翻译者将Defens翻译为防守,告诉了外籍中锋
        {
            wjzf.防守();
        }
    }

客户端:

        static void Main(string[] args)
        {
            Player b = new Forwards("巴蒂尔");
            b.Attack();
            b.Defense();
            Player ym = new Translator("姚明");
            ym.Attack();
            ym.Defense();
            Console.ReadKey();
        }
相关文章
可图IP-adapter-plus开源,魔搭送你一本中文咒语书
快手可图团队基于Kolors-Basemodel 提供 IP-Adapter-Plus 权重和推理代码,魔搭社区新鲜出炉最佳实践,结合中文咒语书,给你喜欢的IP定制风格吧!
可图IP-adapter-plus开源,魔搭送你一本中文咒语书
|
6月前
|
编译器 数据安全/隐私保护 C++
c++primer plus 6 读书笔记 第十三章 类继承
c++primer plus 6 读书笔记 第十三章 类继承
|
6月前
|
C++
c++primer plus 6 读书笔记 第十一章 使用类
c++primer plus 6 读书笔记 第十一章 使用类
|
Java 编译器
类和对象(两万字超详解析)(二)
类和对象(两万字超详解析)
51 0
|
Java 编译器
类和对象(两万字超详解析)(四)
类和对象(两万字超详解析)
75 0
|
存储 Java 编译器
类和对象(两万字超详解析)(一)
类和对象(两万字超详解析)
87 0
|
存储 Java 数据库
类和对象(两万字超详解析)(三)
类和对象(两万字超详解析)
67 0
|
数据采集 API Python
Python爬虫:调用百度翻译接口实现中英翻译功能
Python爬虫:调用百度翻译接口实现中英翻译功能
686 0
|
Java 程序员
漫画:Object类很大,你忍一下(完结篇)
这一次,我们来重点讲解 wait(),notify(),notifyAll() 这三大方法。
176 0
|
机器学习/深度学习 算法
由你定义吃鸡风格!CycleGAN,你的自定义风格转换大师
了解 CycleGAN 的图像风格转换并探索其在在游戏图形模块中的应用。
2096 0