zoukankan      html  css  js  c++  java
  • 设计模式之适配器模式

    什么是适配器模式:将一种接口通过适配器转换成另一种接口。适配器相当是中间转换。

    一个简单的适配器

    下面,我们将一只火鸡变成一只鸭子

    实现

    鸭子:

        public interface Duck
        {
            void quack();
            void fly();
        }
    
        class MallardDuck : Duck
        {
            public void fly()
            {
                Console.WriteLine("fly");
            }
    
            public void quack()
            {
                Console.WriteLine("quack");
            }
        }
    

    火鸡:

        interface Turkey
        {
            void gobble();
            void fly();
        }
    
        class WildTurkey : Turkey
        {
            public void fly()
            {
                Console.WriteLine("fly");
            }
    
            public void gobble()
            {
                Console.WriteLine("gobble");
            }
        }
    

    适配器:

        class TurkeyAdapter : Duck
        {
            public TurkeyAdapter(Turkey turkey)
            {
                this.turkey = turkey;
            }
    
            private Turkey turkey;
            public void fly()
            {
                turkey.fly();
            }
    
            public void quack()
            {
                turkey.gobble();
            }
        }
    

    测试:

            static void Main(string[] args)
            {
                #region 一个简单的适配器模式
                MallardDuck duck=new MallardDuck();
    
                WildTurkey turkey=new WildTurkey();
    
                Duck turkeyDuck=new TurkeyAdapter(turkey);
    
                turkeyDuck.fly();
                turkeyDuck.quack();
    
                #endregion
                Console.ReadKey();
            }
    

    适配器使用过程

    • 1.客户通过调用目标适配器的方法对适配器发出请求
    • 2.适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口。
    • 3.客户接收到调用的结果,但并未察觉这一切是适配器在起转换作用。

    客户和被适配器是解耦的,一个不知道另一个

    定义

    适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不兼容的类可以合作无间。
    适配器模式有良好的OO设计原则:使用对象组合,以修改的接口包装被适配者。这样还有一个优点,被适配的任何子类都可以搭配着适配器使用。

  • 相关阅读:
    【全程NOIP计划】分治与倍增
    apple id 后端验证 django
    安装Tomcat8,在Eclipse中配置Tomcat8
    CURL并发测试POST和DELETE请求
    curl如何发起DELETE/PUT请求?(备忘)
    Ubuntu 11.10下安装配置Zend Studio 9.0破解版详细步骤
    RTP QOS
    RTCP
    DirectDraw基础篇
    RTSP简介
  • 原文地址:https://www.cnblogs.com/Tan-sir/p/8310878.html
Copyright © 2011-2022 走看看