设计模式—装饰模式和适配器模式

装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。

设计模式在JAVA I/O库中的应用

装饰模式在Java语言中的最著名的应用莫过于Java I/O标准库的设计了。

由于Java I/O库需要很多性能的各种组合,如果这些性能都是用继承的方法实现的,那么每一种组合都需要一个类,这样就会造成大量性能重复的类出现。

而如果采用装饰模式,那么类的数目就会大大减少,性能的重复也可以减至最少。因此装饰模式是Java I/O库的基本模式。

适配器模式:适配器模式把一个类的接口变换成所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。

在java.io中InputSteamReader就是一个适配器,起到转接作用,将字节流转为字符流。

具体实现可见:《JAVA与模式》之适配器模式

时间: 2024-10-26 16:40:02

设计模式—装饰模式和适配器模式的相关文章

常见的设计模式:单例模式、工厂模式、观察者模式、装饰模式与适配器模式

常见的设计模式:单例模式.工厂模式.观察者模式.装饰模式与适配器模式 这里可以阅读Terry Lee的设计模式系列来理解学习一下 1.4.1 单例模式 .NET设计模式(2):单件模式(Singleton Pattern)  http://terrylee.cnblogs.com/archive/2005/12/09/293509.html 1.4.2 抽象工厂模式 .NET设计模式(3):抽象工厂模式(Abstract Factory) http://terrylee.cnblogs.com/

【设计模式】 模式PK:装饰模式VS适配器模式

1.概述 装饰模式和适配器模式在通用类图上没有太多的相似点,差别比较大,但是它们的功能有相似的地方:都是包装作用,都是通过委托方式实现其功能.不同点是:装饰模式包装的是自己的兄弟类,隶属于同一个家族(相同接口或父类),适配器模式则修饰非血缘关系类,把一个非本家族的对象伪装成本家族的对象,注意是伪装,因此它的本质还是非相同接口的对象. 大家都应该听过丑小鸭的故事吧,我们今天就用这两种模式分别讲述丑小鸭的故事.话说鸭妈妈有5个孩子,其中4个孩子都是黄白相间的颜色,而最小的那只也就是叫做丑小鸭的那只,

设计模式——装饰模式(Decorator)

要想正确理解设计模式,首先必须明确它是为了解决什么问题而提出来的. 设计模式学习笔记 --Shulin 转载请注明出处:http://blog.csdn.net/zhshulin 1.概念 装饰模式又名包装(Wrapper)模式.装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 但是纯粹的装饰模式很难找到,大多数的装饰模式的实现都是"半透明"的,而不是完全透明的.换言之,允许装饰模式改变接口,增加新的方法.半透明的装饰模式是介于装饰模式和适配器模式之间的.适配器模

IOS设计模式之三(适配器模式,观察者模式)

本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns. 由 @krq_tiger(http://weibo.com/xmuzyq)翻译,如果你发现有什么错误,请与我联系谢谢. 适配器(Adapter)模式 适配器可以让一些接口不兼容的类一起工作.它包装一个对象然后暴漏一个标准的交互接口. 如果你熟悉适配器设计模式,苹果通过一个稍微不同的方式来实现它-苹果使用了协议的方式来实现.你可能已经熟悉UITableViewDelegat

c++设计模式----装饰模式

前言 在实际开发时,你有没有碰到过这种问题:开发一个类,封装了一个对象的核心操作,而这些操作就是客户使用该类时都会去调用的操作:而有一些非核心的操作,可能会使用,也可能不会使用:现在该怎么办呢? 将这些非核心的操作全部放到类中,这样,一个类就包含了很多核心的操作和一些看似有关,但是又无关的操作:这就会使核心类发生"爆炸"的现象,从而使核心类失去了一定的价值,也使使用核心类的客户在核心操作和非核心操作中挣扎: 使用继承来扩展核心类,需要使用核心类时,直接建立核心类对象:当需要使用核心类扩

Java程序设计模式系列之适配器模式

理解适配器设计模式需要从生活中的场景进行联系,在生活当中有那些东西能够称为适配器呢?从字面上理解,"适配"的意思就是让一个东西和另一个东西配对,能够让他们一起工作,比如大家用的笔记本电脑就需要用到电源适配器,转换插口和电流到笔记本上给笔记本电脑进行供电.再比如在国内所有的电器插座都是两口或三口的国内标准插座,但如果到中国大陆以外的地区旅行,想要使用电源给电子产品供电,就需要转换插口了.比如王老师到了香港,看到的电源插座是这样的: 很明显,从国内带去的手机就无法充电了. 那么这个问题怎么

将计算机思维故事化——之设计模式装饰模式

"我要买一个装东西的袋子" --如果需要搬家里的行李,这句话可能会发生在超市里. 那么,上述提到的三个名词--"东西"."袋子"和"行李",应该是如下图关系: (1)行李,是一样东西 (2)袋子,也是一样东西 (3)袋子,可以装行李 通过以上三句话的关系,可以得出结论:第一,袋子可以装东西,虽然其本身就是一样东西:第二,装了东西的袋子,还是一样东西.所以,可以在行李的基础上,不断地套袋子,且不管加多少层,最后得到的还是一样东西

装饰模式和适配器模式

1.装饰模式 动态的给一个对象添加一些额外的职责;   侧重于功能的扩展:对其功能可以自由的增加或者减少; 2.具体实现 (1).代码实现 #include<iostream> using namespace std; class Car{     public:         virtual void show() = 0;     private: }; class RunCar : public Car{     public:         virtual void show(){

大话设计模式-装饰模式(C++)

<大话设计模式>的装饰模式的C++实现. 结构图: Decorator.h: #ifndef _DECORATOR_H #define _DECORATOR_H #include <iostream> #include <string> using namespace std; //ConcreteComponent类 class CPerson { public: CPerson(){}; CPerson(string str):m_sName(str){}; vir