适配器模式 vs 装饰者模式

Reference

[1] https://refactoring.guru/design-patterns/adapter

1. Adaptor Design Pattern 适配器模式

Adapter is a structural design pattern, which allows incompatible objects to collaborate.

You can create an adapter. This is a special object that converts the interface of one object so that another object can understand it.

When adapter receives a call to any of its methods, it translates parameters to appropriate format and then directs the call to one or several methods of the wrapped object.

Exampes could be found here https://refactoring.guru/design-patterns/adapter/java/example

2. Decorator 装饰者模式

Decorator is a structural design pattern that lets you attach new behaviors to objects by placing these objects inside special wrapper objects that contain the behaviors.

Wrapper is the alternative nickname for the Decorator pattern that clearly expresses the main idea of the pattern. A “wrapper” is an object that can be linked with some “target” object. The wrapper contains the same set of methods as the target and delegates to it all requests it receives. However, the wrapper may alter the result by doing something either before or after it passes the request to the target.

Exampes could be found herehttps://refactoring.guru/design-patterns/decorator/java/example

原文地址:https://www.cnblogs.com/codingforum/p/10347224.html

时间: 2024-11-05 13:37:58

适配器模式 vs 装饰者模式的相关文章

外观模式的介绍以及与适配器模式和装饰者模式的区别

外观模式 定义:提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用. 举例:我需要打开微信发送给某个好友某些内容,其中的过程包括了,下载微信,输入账号密码,点击登陆,找到好友,发送消息.这些整体封装成了一个对外的方法,当我调用需要这个流程的时候,我通过一个方法的调用,直接就能实现全部的流程,不需要在请求方,去组合方法去完成这个操作. 设计原则:莫忒耳原则又称最少知识原则,只和你的密友谈话,通过"举例",可以明白这个原则的定义. 原则缺点:采用这

适配器模式和装饰者模式的区别

适配器模式将一个类的接口,转化成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间. 装饰者模式:动态的将责任附加到对象上(因为利用组合而不是继承来实现,而组合是可以在运行时进行随机组合的).若要扩展功能,装饰者提供了比继承更富有弹性的替代方案(同样地,通过组合可以很好的避免类暴涨,也规避了继承中的子类必须无条件继承父类所有属性的弊端). 特点: 1. 装饰者和被装饰者拥有相同的超类型(可能是抽象类也可能是接口) 2. 可以用多个装饰类来包装一个对象,装饰类可以包装装饰类或被装饰对象

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

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

适配器模式 & 装饰器模式

一.适配器模式:简单来讲,就是为了方便使用,完成从 一个接口 到 另一个接口 的 转换,这个负责转换的就是 适配器例如:Reader ——> InputStreamReader 通过类内部组合 StreamDecoder 接收 InputStream 作为参数 完成适配器模式 InputStreamReader inputStreamReader = new InputStreamReader(this.getClass().getClassLoader().getResourceAsStrea

装饰者模式vs适配器模式

http://www.cnblogs.com/tekkaman/p/3275077.html 1.关于新职责:适配器也可以在转换时增加新的职责,但主要目的不在此.装饰者模式主要是给被装饰者增加新职责的. 2.关于原接口:适配器模式是用新接口来调用原接口,原接口对新系统是不可见或者说不可用的.装饰者模式原封不动的使用原接口,系统对装饰的对象也通过原接口来完成使用.(增加新接口的装饰者模式可以认为是其变种--“半透明”装饰者) 3.关于其包裹的对象:适配器是知道被适配者的详细情况的(就是那个类或那个

java_设计模式_装饰者模式_Decorator Pattern(2016-07-28)

装饰模式又名包装(Wrapper)模式.装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任.换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同.装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展. 装饰模式的类图如下: 在装饰模式中的角色有: ● 抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象. ● 具体构件(ConcreteComponent)角色

设计模式——装饰者模式

1.装饰者模式是在不必改变原类文件和使用继承关系的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 2.装饰模式的特点: 1)      装饰对象和真实对象有相同的接口.这样客户端对象就能以和真实对象相同的方式和装饰对象交互. 2)      装饰对象包含一个真实对象的引用 3)      装饰对象接受所有来自客户端的请求.它把这些请求转发给真实的对象 4)      装饰对象可以在转发这些请求以前或以后增加一些附加功能.这样就确保了在运行时,不用修改给定

JavaScript高级---装饰者模式设计

一.设计模式 javascript里面给我们提供了很多种设计模式: 工厂.桥.组合.门面.适配器.装饰者.享元.代理.观察者.命令.责任链 在前面我们实现了工厂模式和桥模式 工厂模式 : 核心:为了生产对象,实现解耦. 桥接模式 : (桥接模式是一种既能把两个对象连接在一起,又能避免二者间的强耦合的方法.通过“桥”把彼此联系起来,同时又允许他们各自独立变化) 主要作用:主要作用表现为将抽象与其实现隔离开来,以便二者独立化. 组合模式 : (组合模式是一种专门为创建Web上的动态用户界面而量身制定

装饰者模式(不太理解的设计模式)

对于装饰者模式一直不太理解,不懂的他与桥接模式的区别在哪???? 23种设计模式之一,英文叫Decorator Pattern,又叫装饰者模式.装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 装饰模式的特点编辑 (1) 装饰对象和真实对象有相同的接口.这样客户端对象就能以和真实对象相同的方式和装饰对象交互. (2) 装饰对象包含一个真实对象的引用(reference) (3) 装饰对象接受所有来自客户端的请求.它把