zoukankan      html  css  js  c++  java
  • 设计模式(七)——适配器模式

    适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以无间合作。         

    这个模式可以创建适配器进行接口转换,让不兼容的接口变成兼容。

    这个模式主要有四个部分:

    Client:客户

    Target:目标接口

    Adapter:适配器

    Adaptee:被适配者

    例子:假设有一个鸭子类,还有一个火鸡类,想让天鹅完成火鸡做的事情,这时候我们就需要一个鸭子适配器.

    鸭子类:

    public interface Duck
        {
            void Quack();
            void Fly();
        }
    
        public class MallardDuck : Duck
        {
            public void Quack()
            {
                Debug.WriteLine("Quack");
            }
            public void Fly()
            {
                Debug.WriteLine("Fly");
            }
        }

    火鸡类:

      public interface TurKey
        {
            void Gobble();
            void Fly();
        }
    
        public class WildTurKey : TurKey
        {
            public void Gobble()
            {
                Debug.WriteLine("Gobble gobble");
            }
    
            public void Fly()
            {
                Debug.WriteLine("I am Flying Short Distance");
            }
        }

    鸭子对象适配器 (采用包含的方式):

     public class TurKeyAdapter : Duck
        {
            TurKey turKey;
            public TurKeyAdapter(TurKey turKey)
            {
                this.turKey = turKey;
            }
    
            public void Quack()
            {
                turKey.Gobble();
            }
            public void Fly()
            {
                turKey.Fly();
            }
        }

     鸭子的类适配器(类适配器采用多重继承的方式):

     public class TurKeyAdapter : WildTurKey, Duck
        {
            public void Quack()
            {
                this.Gobble();
            }
            public new void Fly()
            {
                base.Fly();
            }
        }
  • 相关阅读:
    flink RECEIVED SIGNAL 15: SIGTERM. Shutting down as requested
    hive 正则
    scala.sys.process
    python多版本管理
    行式存储和列式存储
    Windows Latex 中日文字体设置例
    perl笔记
    wordpress plugins collection
    【转载】Windows 7下使用bcdedit删除多余启动项的命令
    修改MySQL密码
  • 原文地址:https://www.cnblogs.com/dlvguo/p/10106272.html
Copyright © 2011-2022 走看看