zoukankan      html  css  js  c++  java
  • 设计模式

    已有的双方无法很好的配合起来时,通过适配器,打通两者的联系。

    class Target
    {
        public virtual void Request()
        {
            Console.WriteLine("普通请求");
        }
    }
    
    class Adaptee
    {
        public void SpecificRequest()
        {
            Console.WriteLine("特殊请求");
        }
    }
    
    class Adapter : Target
    {
        Adaptee adaptee = new Adaptee();
        public override void Request()
        {
            adaptee.SpecificRequest();
        }
    }
    
    Target tar = new Adapter();
    tar.Request();
    

    姚明刚去 NBA 时,教练可以直接对美国球员部署战术,但是姚明听不懂,这个时候需要一名翻译,由教练对翻译说,翻译对姚明说,然后姚明执行。

    abstract class Player
    {
        protected string Name;
        public Player(string name)
        {
            this.Name = name;
        }
    
        public abstract void Attack();
        public abstract void Defense();
    }
    
    class Center : Player
    {
        public Center(string name) : base(name) { }
    
        public override void Attack()
        {
            Console.WriteLine(string.Format("中锋{0}进攻", Name));
        }
    
        public override void Defense()
        {
            Console.WriteLine(string.Format("中锋{0}防守", Name));
        }
    }
    
    class ForeignCenter
    {
        string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
    
        public void 进攻()
        {
            Console.WriteLine(string.Format("外籍中锋{0}进攻", Name));
        }
        public void 防守()
        {
            Console.WriteLine(string.Format("外籍中锋{0}防守", Name));
        }
    }
    
    class Translator : Player
    {
        ForeignCenter fc = new ForeignCenter();
        public Translator(string name) : base(name) 
        {
            fc.Name = name;
        }
    
        public override void Attack()
        {
            fc.进攻();
        }
    
        public override void Defense()
        {
            fc.防守();
        }
    }
    
    
    // 业务代码:
    Player b = new Center("斯科拉");
    Player x = new Translator("姚明");
    
    b.Attack();
    x.Attack();
    x.Defense();
    
  • 相关阅读:
    .Net环境下的缓存技术介绍
    JavaScript 全局对象
    JavaScript escape() 函数
    实现DIV拖动
    巧用Ajax的beforeSend 提高用户体验
    js中ie8下不识别indexOf的解决办法
    页面弹窗效果HTML
    让html页面中的文字不可选中
    MVC路由规则
    C# Math.Round
  • 原文地址:https://www.cnblogs.com/MichaelLoveSna/p/14199045.html
Copyright © 2011-2022 走看看