适配器模式的分析、结构图及基本代码「建议收藏」

适配器模式的分析、结构图及基本代码

大家好,又见面了,我是全栈君。



以下说说适配器模式:

定义:将一个类的接口转换成客户希望的还有一个接口。

Adapter模式使得原本因为接口不兼容而不能一起工作的那些类能够一起工作。

适用地方:在软件开发中,也就是系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类。可是接口又与复用环境要求不一致的情况。
注意:要在两方都不太easy改动的时候再使用适配器模式适配。
开放-封闭原则:是说软件实体(类、模块、函数等等)应该能够扩展,可是不可修改。这个原则事实上有两个特征。一个是说‘对于扩展时开放的’。还有一个是说‘对于更改时封闭的’。在我们最初编写代码的时候,如果变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化。

即面对需求,对程序的修改是通过新增代码进行的,而不是更改现有的代码。这就是‘开放-封闭原则’的精神所在,遵循这个原则能够带来面向对象技术所声称的巨大优点。也就是可维护、可扩展、可复用、灵活性好。
结构图:

适配器模式的分析、结构图及基本代码「建议收藏」
基本代码:

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();
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115308.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言大数运算-乘除法篇「建议收藏」

    C语言大数运算-乘除法篇「建议收藏」前言:这是第三篇博客,也是一次介绍二个计算的博客,可能难度会比前两篇博客大一点,所以建议对于初学者来说一定要看完我的前两篇博客再来看本篇博客,关于本次实验的环境,和思想在第一篇博客已经简单介绍过了,所以不再赘述,我会先介绍大数的乘法载介绍大数的除法,乘法的难点在于要使用一个嵌套循环,除法的难点在于一个字使用符串比较方法的技巧,本次还是会将算法都写成函数,然后在main()函数中调用,原因是在第四

    2022年10月7日
    4
  • HTML登录界面的实现详解

    HTML登录界面的实现详解前言序锦前阵子参加学校的暑期实习,我作为项目负责人,除了进行统筹规划,整体运营以及进度安排等工作外呢,我还负责了前端模块,参与并编写了前端页面,在之前学过前端的基础上,本次参与前端的编写就比较容易了,我和另外一个伙伴我们选择了套用模板,在模板的基础上修改成我们想要的样子,这一点很重要,在这样一个很短的时间内,进行前端的编写,我们最好的选择就是进行模板的修改,但对于初学者来说,就算是…

    2022年5月11日
    77
  • vue时间日期格式化

    vue时间日期格式化//对Date的扩展,将Date转化为指定格式的String//例子://(newDate()).Format("yyyy-MM-ddhh:mm:ss.S")==>2006-07-0208:09:04.423//(newDate()).Format("yyyy-M-dh:m:s…

    2022年5月23日
    43
  • java里的全局变量_全局变量的值会不会改变

    java里的全局变量_全局变量的值会不会改变在类定义(声明)了全局变量,没有对其赋值,利用类内的方法对其赋值,其值变成了方法给的值,无论是在方法内部还是方法外。(除非你定义了同名的局部变量)

    2022年8月21日
    15
  • Linux下查看Apache连接数

    Linux下查看Apache连接数

    2021年6月18日
    128
  • 全局低级键盘钩子[通俗易懂]

    全局低级键盘钩子[通俗易懂]/*========================================================================文件:kbevent.h说明:全局消息钩子时间:2005-03-20编写:oshj||oshj@21cn.c

    2022年5月8日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号