Modo adaptador: necesito traducción en la NBA

  Definición del modo de adaptador (Adaptador) : Convierta la interfaz de una clase en otra interfaz que desee el cliente. El patrón Adaptador permite que las clases que no pueden trabajar juntas debido a la incompatibilidad de la interfaz trabajen juntas.


Inserte la descripción de la imagen aquí
  Escenario de uso :

  • Reutilice algunas clases existentes, pero la interfaz no es coherente con el entorno de reutilización
  • Cuando ambas partes no son fáciles de modificar

  Antecedentes del código: Yao Ming fue a los Estados Unidos para jugar en la NBA, pero no pudo comunicarse con los entrenadores y jugadores porque no podía comunicarse con los entrenadores y jugadores.

Categoría de jugador:

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

Adelante: Comunica tácticas en inglés, Yao Ming no sabe qué significa Ataque () y Defensa ()

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

Centro extranjero (Yao Ming): use el chino para comunicar tácticas y solo diga "ofensivo" y "defensa"

    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);
        }
    }

Clase de traductor: el trabajo del adaptador

    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.防守();
        }
    }

Cliente:

        static void Main(string[] args)
        {
    
    
            Player b = new Forwards("巴蒂尔");
            b.Attack();
            b.Defense();
            Player ym = new Translator("姚明");
            ym.Attack();
            ym.Defense();

            Console.ReadKey();
        }

Supongo que te gusta

Origin blog.csdn.net/CharmaineXia/article/details/110919162
Recomendado
Clasificación