• Win8.1应用开发之适配器模式(C#实现)


    实际上适配器模式是用于解耦。设想一下我们的程序模块A在与模块B打交道时,需要在许多地方多次使用B中某个类的方法,而负责开发B的程序猿Tom还未完全实现该类,会随时更改该类中的方法,那么当Tom在修改时,负责A的攻城狮Jerry不得不进行苦逼的修改。聪明的项目经理Dabao想出了好方法——适配器模式,于是在Tom和Jerry之间进行了如下设计:

     /// <summary>
        /// B中目前只定义了英雄KASS
        /// </summary>
        public class KASS
        {
            public void R()
            {
                //KASS的技能
            }
        }
    
    
            /// <summary>
        /// 定义英雄的接口
        /// </summary>
        public class Hero
        {
            /// <summary>
            /// 使用virtual修饰以便子类可以重写
            /// </summary>
            public virtual void attack()
            {
                //英雄进攻的方法和招数
            }
        }
     
    
        /// <summary>
        /// 定义适配器
            /// B暂时提供英雄KASS
        /// </summary>
        public class HeroAdapter:Hero
        {
            // 建立一个私有的英雄KASS对象
            private KASS kass = new KASS();
    
            /// <summary>
            /// 通过重写,表面上调用attack()方法,实际调用R()
            /// </summary>
            public override void attack()
            {
                kass.R();
            }
        }
            
            
            /// <summary>
        /// Tom负责的模块A
        /// </summary>
            public class A
        {
            public static void Main(string[] args)
            {
                // A需要借助B中的英雄完成进攻的任务,但B还未定下是那个英雄,所以不能直接创建特定英雄的对象
                            // 但我们知道肯定要一个英雄,并且需要这个英雄去进攻
                Hero hero = new HeroAdapter();
                hero.attack();
    
                //...
            }
        }

    详细说明:http://wp.662p.com/thread-8244-1-1.html

  • 相关阅读:
    leetcode每日一题:836. 矩形重叠
    单链表之删除头结点,查找等于定值x的结点数,单链表的逆置
    拼数,零幺串
    最大公约数/最小公倍数
    寻找二叉树双亲结点
    Object类的派生-c++
    牛客小白月赛22
    二叉树的基本操作
    字符串的反转,替换,删除
    [2011山东ACM省赛] Identifiers(模拟)
  • 原文地址:https://www.cnblogs.com/chenkaiyuan/p/3850259.html
Copyright © 2020-2023  润新知