装饰者模式,适配器模式,代理模式区别

装饰者模式的关注点在于添加功能

代理模式的关注点在于控制对象的访问,其原型对象对于用户无法得知

适配器模式关注点在于适配,从定义上看装饰模式是对核心对象或者功能的扩展,适配器模式是把对象或者功能放到一个新对象中引用。举个例子,现在书城卖道德经的书,有线装版,有精装版,有日文版,有英文版,其中线装版和精装版就是装饰模式,日文版和英文版就是适配器模式,各种版本都是为迎合不同消费者的不同需求。为什么呢?因为线装版和精装版的道德经虽然包装不同,但内容相同,日文版和英文版就不同,这两个版本的内容就可能和原版的不同,文化差异嘛,翻译的内容虽来自道德经,但根据不同国家的文化,思维逻辑什么的就可能改变一些想法

装饰模式一般在下列情况使用:需要扩展一个类的功能或者给你个类增加附加责任;需要动态的给一个对象增加功能,这些功能可以再动态的撤销;需要增加有一些基本功能的排列组合而产生非常大量的功能,从而使得继承关系变得不现实。

适配器模式一般使用的情况包括:系统需要使用现有的类,但此类已经不符合系统的需要;

想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的的类一起工作。适配器模式在系统升级的时候使用的频率很高,对旧系统的一些功能方法在新系统中引用。

装饰模式java中的I/O文件的操作中都有体现。

Java的IO库中处理流的类有FIleInputStream,FileOutputStream,DataInputStream,DataOutputStream类等。在InputStream,OutputStream,Reader,Writer结构的内部,有一些流处理器可以对另一些流处理器起到装饰作用,形成新的,改善的流处理器。这就体现了装饰模式的作用。同时在一些流处理器的内部有对其他流处理器的功能的适配引用,这体现了适配器模式的优点。

模式概念的出现,完善到合理应用是前辈们在实际的应用中不断总结的结晶。对于不同的需求合理的使用模式能起到事半功倍的效果,但是模式不是放之四海而皆准的,况且模式也不是一成不变死板的,随着技术的发展,工程师的智慧总结,可能会有新的模式出现和旧的模式的消亡,模式就是为实际需要而生,没必要上升到哲学这种高度。

时间: 2024-10-17 03:24:16

装饰者模式,适配器模式,代理模式区别的相关文章

设计模式回顾:策略模式、代理模式、装饰者模式的区别

前言 设计模式有很多,但设计模式的目的是一致的,都是为了提升代码的可读性和可扩展性.设计模式都遵循一些基本的原则,设计模式是为了遵循这些原则而创造的工具. - 单一职责原则:就一个类而言,应该仅有一个引起它变化的原因.这一点是说,如果有一些类过于臃肿,承担了过多的职责,就应当分解他. - 开放-封闭原则:软件实体(类.模块.函数等)应该可以扩展,但是不可修改.这一点是说,拒绝硬编码,拒绝直接修改原有代码. - 依赖倒转原则:高层模块不应该以来低层模块.两个都应该以来抽象.抽象不应该依赖细节.细节

装饰器模式与代理模式比较

当有这样的业务需求的时候——要为写好的代码在目标代码之前或者之后添加部分操作时,此时最笨的方法就是直接在目标代码的前后加上我们需要的功能代码,但是这样违背了java封装的特性.更好一点的方法就是使用设计模式——代理模式,然而,装饰器模式也有同类的功能,那么着两种设计模式到底有什么区别呢?下面就分别来学习一下这两种设计模式. 装饰器模式类图如下: 该类图包括几个部分:一个接口(装饰器与需要被装饰的实体类都需要实现该接口,公用方法在该接口中定义),一个实现类,一个装饰器的接口,具体实现的装饰器. 在

Java进阶篇设计模式之七 ----- 享元模式和代理模式

前言 在上一篇中我们学习了结构型模式的组合模式和过滤器模式.本篇则来学习下结构型模式最后的两个模式, 享元模式和代理模式. 享元模式 简介 享元模式主要用于减少创建对象的数量,以减少内存占用和提高性能.这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式. 用通俗的话来说就是进行共用.生活中也有一些例子,比如之前很火的共享单车,更早之前的图书馆,编程中经常用的String类,数据库连接池等等.当然,享元模式主要的目的是复用,如果该对象没有的话,就会进行创建. 享

结构型模式之代理模式

概述 在软件开发中,有一种设计模式可以提供与代购网站类似的功能.由于某些原因,客户端不想或不能直接访问一个对象,此时可以通过一个称之为“代理”的第三者来实现间接访问,该方案对应的设计模式被称为代理模式. 代理模式是一种应用很广泛的结构型设计模式,而且变化形式非常多,常见的代理形式包括远程代理.保护代理.虚拟代理.缓冲代理.智能引用代理等. 定义 代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问. 实现 /// <summary> /// 供应商 /// </s

Java-设计模式之代理模式

1.什么是代理模式? 代理模式就是为其他对象提供一种代理,以控制对这个对象的访问.例如我们在购买火车票的时候,在有些地方有火车票的代售点,这些代售点可以帮助火车站来实行购票的功能,像这种模式就是代理模式.在Java中,代理模式启动中介的作用,可以去掉功能服务或者增加额外的服务. 2.代码模式的分类 A.远程代理:为不同地理的对象提供局域网代表对象,相似于客户端和服务器一样的模式. B.虚拟代理:根据需要将资源消耗很大的对象进行延迟,真正需要的时候进行创建.例如,在我们浏览网页的时候,有时候需要加

Java代理模式——静态代理模式

一:代理模式 代理模式的作用是:为其他对象提供一种代理以控制这个对象的访问.在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 二:代理模式设计到的角色 抽象角色:声明真是对象和代理对象的共同接口(抽象类或接口). 代理角色:代理对象角色内部含有对真是对象的引用,从而可以操作真是对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能够代替真是对象.同时,代理对象可以在执行真实对象的操作时,附加其他操作,相当于对真是对象进行封装. 真实

结构型模式:代理模式

文章首发: 结构型模式:代理模式 七大结构型模式之七:代理模式. 简介 姓名 :代理模式 英文名 :Proxy Pattern 价值观 :为生活加点料 个人介绍 : Provide a surrogate or placeholder for another object to control access to it. 为其他对象提供一种代理以控制对这个对象的访问. (来自<设计模式之禅>) 你要的故事 咱们从事 IT 行业,随时都可能上网查东西,如果网络速度慢或者网络访问受限制,那是相当的

装饰器模式和代理模式区别

代理模式和装饰者模式上在语法形式上几乎完全一样,那么它们的区别在哪里呢? 装饰者模式:动态地给一个对象添加一些额外的职责.就增加功能来说,装饰模式相比生成子类更加灵活 代理模式:为其它对象提供一种代理以控制对这个对象的访问. 其实,它们的着重点一个在于“增加”职责,另一个在于“控制”访问.这是它们最本质的区别.

JAVA笔记7__接口应用/Object类/简单工厂模式/静态代理模式/适配器模式

/** * 接口应用 */ public class Main { public static void main(String[] args) { Person p = new Person("fish7"); p.setIsay(new BeforeGong()); p.say(); p.setIsay(new AfterGong()); p.say(); } } class Person{ //只有在运行期才和say行为关联起来,这就叫面向接口编程 private String

4 结构型模式之 - 代理模式

代理模式的介绍:代理模式也称为委托模式,在开发中经常用到,是编程的好帮手,在日常生活中也比较常见.比如公司中午让同事帮忙带一份饭,比如我们请一个律师打官司,比如我们用代理服务器上网等等.代理模式真是无处不在. 代理模式的定义:为其它对象提供一种代理以控制对这个对象的访问. 代理模式的使用场景:当无法或者不想直接访问某个对象或者访问某个对象存在困难时,可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象或者代理对象需要实现相同的接口. 代理模式一般的写法(静态代理模式): 代理类和