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

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

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



以下说说适配器模式:

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

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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • RabbitMQ入门:总结

    随着上一篇博文的发布,RabbitMQ的基础内容我也学习完了,RabbitMQ入门系列的博客跟着收官了,以后有机会的话再写一些在实战中的应用分享,多谢大家一直以来的支持和认可。RabbitMQ入门系

    2022年2月16日
    50
  • 数组 选择排序 c语言[通俗易懂]

    数组 选择排序 c语言[通俗易懂]解法一:#include<stdio.h>#defineNUM10intmain(){inta[NUM],i,j,k,t;printf(“请输入%d个数”,NUM);for(i=0;i<NUM;i++)scanf(“%d”,&a[i]);for(i=0;i<NUM-1;i++){…

    2022年6月25日
    31
  • treeview控件使用详解python_TreeView控件实践

    treeview控件使用详解python_TreeView控件实践TreeView控件可以通过HierarchicalDataTemplate和DataTemplate来自定义。1)HierarchicalDataTemplate用来支持HeaderedItemsControl,其中DataType指定当前的数据类型,只有符合这个类型才使用HierarchicalDataTemplate;ItemsSource用来指定ItemsHost;内部的自定义实现(…

    2025年8月11日
    2
  • suse linux 版本查看,SUSE Linux 查看版本号

    suse linux 版本查看,SUSE Linux 查看版本号1 cat proc version 内核版本 cat proc versionsuse linux DM source cat proc versionLinux 0 76 0 11 default geeko buildhost gccversion4 3 4 gcc 4 3 branchrevisi SUSELinux

    2025年10月14日
    3
  • mybatis激活码【2021最新】

    (mybatis激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~F…

    2022年3月28日
    244
  • shell运维脚本实例_100个必会的shell脚本

    shell运维脚本实例_100个必会的shell脚本无论是系统运维,还是应用运维,均可分为“**纯手工”—>“脚本化”—>“自动化”—>“智能化”**几个阶段,其中自动化阶段,主要是将一些重复性人工操作和运维经验封装为程序或脚本,一方面避免重复性操作及风险,另一方面提高执行效率。在自动化运维的转变过程中,经常使用的可能就是shell脚本了。很多人认为shell脚本简单,但其实Shell的小脚本却有大智慧。别小看几十行代码,它夹杂着系统设计、代码规范和操作经验等等细节,在建设自动化运维的工作中,还是很值得我们研究学习的。为了帮助大.

    2022年9月28日
    2

发表回复

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

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