`
terryfeng
  • 浏览: 507285 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

适配器模式(Adapter)

阅读更多

适配器模式比较简单常用,他封装不匹配的接口,提供合适的接口。

重要概念

1. 适配器模式,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原来由于接口不兼容而不能一起工作的那些类可以一起工作。

2. 概念:当需要的东西就在面前,却不能使用,而短时间又无法改造它,于是我们就想办法适配它。适配器使一个方法适合另一个方法。

3. 系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用与希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。

4. 类适配器模式和对象适配器模式,由于C#不支持多继承,所以这里说明的是对象适配器

image

5.使用一个已经存在的类,但如果他的接口,也就是他的方法和你的要求不相同时,就应该考虑用适配器模式对其进行封装。

6.两个类所作的事情相同或相似,但是具有不同的接口时要使用它。

7.在软件维护的时候才使用适配器模式,双方都不太容易修改的时候再使用适配器模式。

8.如果能实现预防接口不同的问题,不匹配就不会发生,在有小的接口不统一问题发生时,及时重构,问题不至于扩大,只有碰到无法改变原有设计和代码的情况才考虑适配器。

9.事后控制不如事中控制,事中控制不如事前控制。

示例代码

 

using System;
using System.Collections.Generic;
using System.Text;

namespace 适配器模式
{
    class Program
    {
        static void Main(string[] args)
        {
            Target target = new Adapter();
            target.Request();

            Console.Read();

        }
    }

    class Target
    {
        public virtual void Request()
        {
            Console.WriteLine("普通请求");
        }
    }

    class Adaptee
    {
        public void SpecificRequest()
        {
            Console.WriteLine("特殊请求");
        }
    }

    class Adapter : Target
    {
        private Adaptee adaptee = new Adaptee();

        public override void Request()
        {
            adaptee.SpecificRequest();
        }
    }
}

NBA翻译

image

using System;
using System.Collections.Generic;
using System.Text;

namespace 适配器模式
{
    class Program
    {
        static void Main(string[] args)
        {
            Player b = new Forwards("巴蒂尔");
            b.Attack();

            Player m = new Guards("麦克格雷迪");
            m.Attack();

            //Player ym = new Center("姚明");
            Player ym = new Translator("姚明");
            ym.Attack();
            ym.Defense();

            Console.Read();
        }
    }

    //篮球运动员
    abstract class Player
    {
        protected string name;
        public Player(string name)
        {
            this.name = name;
        }

        public abstract void Attack();
        public abstract void Defense();
    }

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

    //中锋
    class Center : Player
    {
        public Center(string name)
            : base(name)
        {
        }

        public override void Attack()
        {
            Console.WriteLine("中锋 {0} 进攻", name);
        }

        public override void Defense()
        {
            Console.WriteLine("中锋 {0} 防守", name);
        }
    }

    //后卫
    class Guards : Player
    {
        public Guards(string name)
            : base(name)
        {
        }

        public override void Attack()
        {
            Console.WriteLine("后卫 {0} 进攻", name);
        }

        public override void Defense()
        {
            Console.WriteLine("后卫 {0} 防守", name);
        }
    }

    //外籍中锋
    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);
        }
    }

    //翻译者
    class Translator : Player
    {
        private ForeignCenter wjzf = new ForeignCenter();

        public Translator(string name)
            : base(name)
        {
            wjzf.Name = name;
        }

        public override void Attack()
        {
            wjzf.进攻();
        }

        public override void Defense()
        {
            wjzf.防守();
        }
    }
}
分享到:
评论

相关推荐

    PHP设计模式(五)适配器模式Adapter实例详解【结构型】

    适配器模式(Adapter Pattern)是一种结构型设计模式,它旨在解决不同接口之间不兼容的问题,使得原本不能协同工作的类可以协同工作。在PHP中,适配器模式可以帮助开发者将一个类的接口转换为客户期望的另一个接口,...

    java设计模式之适配器模式(Adapter)

    适配器模式(Adapter Pattern)是软件设计模式中的一种,其主要目的是解决接口不兼容问题,使得原本因为接口差异无法协同工作的类能够协同工作。在Java中,适配器模式通常分为类的适配器模式和对象的适配器模式。 ...

    适配器模式adapter,含源码下载

    适配器模式(Adapter Pattern)是一种结构型设计模式,它能将两个不兼容的接口连接在一起,使得原本由于接口不匹配而无法一起工作的类能够协同工作。在IT行业中,适配器模式广泛应用在系统集成、组件重用以及解决...

    Java设计模式之Adapter适配器模式

    Java设计模式之Adapter适配器模式 Java设计模式之Adapter适配器模式是一种结构型设计模式,主要用于解决不同接口之间的不兼容问题,使得原本由于接口不兼容不能一起工作的那些类可以一起工作。Adapter模式的主要...

    设计模式C++学习之适配器模式(Adapter)

    适配器模式(Adapter)是软件工程中一种常用的设计模式,它允许两个不兼容的接口之间进行通信。在C++编程中,适配器模式能够帮助我们复用现有的类,或者将第三方库的接口与我们的系统接口进行对接,从而提高代码的可...

    c++-设计模式之适配器模式(Adapter Pattern)

    适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个接口转换为客户端期望的另一个接口。适配器模式常用于解决由于接口不兼容而无法正常工作的类之间的协作问题。 适配器模式的组成 目标接口(Target...

    设计模式之 适配器 Adapter C++ 源码

    设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式...

    通过java实现适配器模式(Adapter Pattern).rar

    在Java中,适配器模式(Adapter Pattern)通常用于使接口不兼容的类能够协同工作。它分为类适配器(通过继承实现)和对象适配器(通过组合实现)两种主要形式。然而,由于Java不支持多继承,类适配器通常通过实现一...

    C++设计模式之适配器模式(Adapter)

    C++设计模式之适配器模式(Adapter) C++设计模式之适配器模式(Adapter)是指将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式主要应用于希望复用...

    php适配器模式介绍

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在PHP开发中,当需要复用已有的类或者库,但它们的接口与当前项目的需求不匹配时,适配器模式就显得尤为有用。适配器模式主要有对象适配器和类...

    通过C++实现适配器模式(Adapter Pattern).rar

    适配器模式(Adapter Pattern)是一种结构型设计模式,它允许接口不兼容的类一起工作。在C++中,适配器模式通常通过创建一个适配器类来实现,该类将不兼容的接口转换为兼容的接口。 压缩包文件代码是一个简单的C++...

    适配器模式(Adapter Pattern)原理图

    适配器模式是一种结构型设计模式,它允许接口不兼容的两个类可以协同工作。以下是该模式的要点: 1. **角色**: - **Target(目标接口)**:客户端期望调用的接口。 - **Adaptee(适配者)**:现有的、接口与目标...

    适配器模式(Adapter)demo

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在软件开发中,我们常常遇到这样的情况:一个系统中的组件需要与另一个系统或库中的组件交互,但它们之间的接口不匹配,这时候就需要适配器模式...

    浅析php适配器模式(Adapter)

    适配器模式是一种常见的设计模式,它的主要目的是通过一个适配器类使得原本由于接口不兼容而无法一起工作的类能够协同工作。在面向对象编程中,不同类之间的交互是常见的,但它们之间往往存在接口上的差异。适配器...

    Android设计模式之适配器(Adapter)模式

    适配器模式是一种常用的设计模式,它允许不同的接口或类之间进行通信,即使它们的接口不兼容。在Android开发中,适配器模式扮演着重要的角色,特别是在数据展示和组件交互方面。 1. **模式介绍** - **定义**:...

    php设计模式 Adapter(适配器模式)

    适配器模式是软件设计模式中的一种结构型模式。它的主要目的是通过提供一个中间层,将一个类的接口转换成客户所期望的另一个接口,从而使得原本因为接口不兼容而无法一起工作的那些类可以协同工作。适配器模式在PHP...

    适配器模式t31

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在软件工程中,这种模式常被用来解决新旧系统对接、不同组件间的兼容性问题,或者为了复用已有代码而进行的接口转换。适配器模式的核心思想是...

    适配器模式1

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在C++中,适配器模式可以通过类继承或者对象组合的方式实现。类适配器模式利用多重继承,让适配器类同时继承目标接口和适配者类,而对象适配器...

    适配器模式笔记1

    【适配器模式笔记1】 适配器设计模式是一种结构型设计模式,它允许不同的类协同工作,即使它们的接口不兼容。适配器模式的关键在于将一个类的接口转换成客户端期望的另一种接口,从而使得原本由于接口不兼容而不能...

Global site tag (gtag.js) - Google Analytics