适配器模式、装饰模式、代理模式异同

此三者均是对旧的对象进行封装以提供新的行为,实际上都包含了代理的概念,但实际使用时又有所区别:

适配器模式:将A接口的实现封装后表现出了B接口的行为

装饰模式:将A接口的实现封装后仍然表现出A接口的行为,但在行为逻辑上与原来不同

代理模式:将A接口的实现封装后仍然表现出A接口的行为,这一点上与装饰模式相同,所以非常容易混淆;实际上装饰模式确实可以认为是代理模式的一种类型,因为装饰模式的代理目标局限于一个普通的Java对象,而代理模式中代理目标则更自由,远程代理中它是存在于另一台主机上,虚拟代理中则是一个临时的对象等

原文地址:https://www.cnblogs.com/pxzxj/p/11736143.html

时间: 2024-10-10 20:31:44

适配器模式、装饰模式、代理模式异同的相关文章

菜鸟版JAVA设计模式—适配器模式,装饰模式,代理模式异同

节前把3个设计模式的学习心得分享了一下,分别是适配器模式,装饰模式,代理模式. 但是似乎越写越有些迷糊,这三种模式都有着一些大同小异的地方,总是有些搞不清. 今天再重新学习下,把学习心得分享给大家一下.这次是结合的我工作中的实际项目. 设计模式,其实是一种解决方法,JAVA作为一种面向对象的语言,对于所有的设计模式在实现上,总是少不了对接口的实现,对抽象类的继承,有时候似乎是为了去实现接口而去写接口,所以在这三种模式的说明代码中,我们都定义了接口这些东西,所以才有了现在的混淆. 先不厌其烦的介绍

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

装饰者模式的关注点在于添加功能 代理模式的关注点在于控制对象的访问,其原型对象对于用户无法得知 适配器模式关注点在于适配,从定义上看装饰模式是对核心对象或者功能的扩展,适配器模式是把对象或者功能放到一个新对象中引用.举个例子,现在书城卖道德经的书,有线装版,有精装版,有日文版,有英文版,其中线装版和精装版就是装饰模式,日文版和英文版就是适配器模式,各种版本都是为迎合不同消费者的不同需求.为什么呢?因为线装版和精装版的道德经虽然包装不同,但内容相同,日文版和英文版就不同,这两个版本的内容就可能和原

适配器模式与代理模式

1.简介 适配器模式:适配器模式(英语:adapter pattern)有时候也称包装样式或者包装.将一个类的接口转接成用户所期待的.一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类别自己的接口包裹在一个已存在的类中. 代理模式:代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 2.困惑 设计模式总是通过增加层来进行解耦合,提高扩展性,但是如果我们没法从在这

模式的秘密-适配器模式和代理模式的区别

一.简介        适配器模式:适配器模式(英语:adapter pattern)有时候也称包装样式或者包装.将一个类的接口转接成用户所期待的.一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中.        代理模式:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 二.困惑        设计模式总是通过增加层来进行解耦合,提高扩展性

与接口相关的设计模式(2):代理模式、标识类型模式及常量接口模式

在上文与接口相关的设计模式(1)中,详细介绍了定制服务模式和适配器模式,下面我们来看第三种与接口相关的模式:代理模式. 代理模式 定义:为对象提供一种代理,以控制对这个对象的访问. 分类: 远程代理(Remote Proxy)-为不同地理的对象提供局域网代表对象.(类似于客户端和服务器端) 虚拟代理(Virtual Proxy)-根据需要将资源消耗很大的对象进行延迟,真正需要的时候才进行创建.(网页中图片的加载,先用一张虚拟的图片进行显示,等图片加载完成后再进行显示) 保护代理(Protect

设计模式——代理模式与装饰模式的异同

两种模式的特点 装饰模式: 在不改变接口的前提下,动态扩展对象的访问. 动态继承,让类具有在运行期改变行为的能力. 装饰模式,突出的是运行期增加行为,这和继承是不同的,继承是在编译期增加行为. 强调:增强 代理模式: 在不改变接口的前提下,控制对象的访问. 1.从封装的角度讲,是为了解决类与类之间相互调用而由此导致的耦合关系,可以说是接口的另外一个层引用. 比如:在a类->b代理->c类这个关系中,c类的一切行为都隐藏在b中.即调用者不知道要访问的内容与代理了什么对象. 2.从复用的角度讲,可

代理模式 vs 装饰模式

代理模式和装饰模式有很大的相似性,二者的类图(几乎)是一样的.下面分别讲解代理模式和装饰模式. 1.代理模式 一般著名的跑步运动员都会有自己的代理人,如果想联系该运动员的比赛事宜,可以直接联系他的代理人就可以了.类图如下所示: IRunner接口如下: public interface IRunner { public void run(); } Runner类如下所示: public class Runner implements IRunner { @Override public void

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

关于装饰模式和动态代理模式

装饰模式和动态代理模式乍一看差不多,都是动态的增加行为,其实有各自的区别. 一.首先我们看一下装饰设计模式,其基本思想如下: 1.编写一个类,实现与被装饰类相同的接口.目的使他们有相同的行为 2.定义一个实例变量,引用被装饰对象.目的和原来的老对象进行交接 3.定义构造方法,把被装饰对象注入进来. 4.对于不需要改写的方法,调用被装饰对象的. 5.对于要改写的方法,改写即可. 废话不多说,举一个例子,模拟实现一个数据库连接池,在这里,我想重写close方法,以实现调用close方法之后不是关闭连