java基础47 装饰着模式设计】的更多相关文章

1.装饰者模式 增强一个类的功能,而且还可以让这些装饰类相互装饰 2.装饰者设计模式的步骤 1.在装饰类的内部维护一个被装饰类的引用    2.让装饰者有一个共同的父类或者父接口 3.实例 package com.dhb.file; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.Reader; /**…
设计模式(Design Pattern) 1.是一套被反复使用.多人知晓的,经过分类编目 的 代码设计经验总结.使用设计模式是为了可重用代码,让代码更容易维护以及扩展. 2.简单的讲:所谓模式就是得到很好研究的范例,设计模式就是设计的范例,更方便学习交流. 3.模式不是框架,也不是过程,模式也不是简单的问题的解决方案,因为模式必须是典型问题的解决方案,是可以让学习者举一反三,有研究价值.有交流价值.有自己名字的例子. 4.模式不能套用,不要以为在任何一个系统中都要使用某些设计模式,系统的设计也不…
Java设计模式 单例模式 装饰者模式 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 静态代理模式:https://www.cnblogs.com/StanleyBlogs/p/10761604.html 什么是设计模式 设计模式其实就是是写了很多代码的人总结出来的经验! 设计模式是关于一些问题的最佳解决方案: 也就是说,每一个典型的问题,关于一个典型的问题,他都会总结出来一个最佳的解决方案: 就比方说医生问诊: 你挂不同的科室,也就是不同的医生,每个医生都有自己擅长并拿手的…
黑马程序员:Java基础总结 静态代理模式&动态代理   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 静态代理模式 public  class  Ts {         public  static  void  main(String[] args)  throws  Exception {               // 通过中介公司生产一批衣服             ClothingProduct cp =  new  ProxCompany( ne…
本文写在po主初学JAVA时,在学习inputStream摸不着头脑,受Java IO-InputStream家族 -装饰者模式一文启发,所以在理清思路时写下本文.因为初学,如有错误,望指正. 因为和输入流与之对应的还有输出流(即OutputStream),在此只针对输入流InputStream讨论. 1. 家族老大: 一说起家族中的老大,InputStream自然是当仁不让,在java的输入流操作的类中,衍生出的基本子类有,可以理解为这些都是InputStream它的孩子(子类): Input…
一.装饰者模式 1.定义及作用 该模式以对客户端透明的方式扩展对象的功能. 2.涉及角色      抽象构件角色:定义一个抽象接口,来规范准备附加功能的类. 具体构件角色:将要被附加功能的类,实现抽象构件角色接口. 抽象装饰者角色:持有对具体构件角色的引用并定义与抽象构件角色一致的接口. 具体装饰角色:实现抽象装饰者角色,负责为具体构件添加额外功能. 3.简单实现 抽象构件角色java 代码: package com.pattern.decorator2; /** * 抽象构件角色 * @aut…
一.设计模式 javascript里面给我们提供了很多种设计模式: 工厂.桥.组合.门面.适配器.装饰者.享元.代理.观察者.命令.责任链 在前面我们实现了工厂模式和桥模式 工厂模式 : 核心:为了生产对象,实现解耦. 桥接模式 : (桥接模式是一种既能把两个对象连接在一起,又能避免二者间的强耦合的方法.通过“桥”把彼此联系起来,同时又允许他们各自独立变化) 主要作用:主要作用表现为将抽象与其实现隔离开来,以便二者独立化. 组合模式 : (组合模式是一种专门为创建Web上的动态用户界面而量身制定…
装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构. 这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,动态给一个对象添提供了额外的功能. 我们通过下面的实例来演示装饰器模式的用法.模拟一个人从想吃饭.找饭店.享受美食.结束吃饭的过程 代码展示: 首先创建一个被修饰的接口 Eat package decorator; //吃饭接口 public…
最近看到一篇文章,初步介绍java.io.InputStream,写的非常通俗易懂,在这里我完全粘贴下来. 来源于 https://mp.weixin.qq.com/s/hDJs6iG_YPww7yeiPxmZLw 在学习java.io.*包的时候,Input-Stream那一群类很让人反感,子类繁多就不用说,使用起来非常奇怪.我们想以缓存的方式从文件中读取字节流.总要先创建一个FileInput-Stream,然后把这个File-InputStream放入Buffered-InputStrea…
要实现装饰者模式,注意一下几点内容: 1.装饰者类要实现真实类同样的接口 2.装饰者类内有一个真实对象的引用(可以通过装饰者类的构造器传入) 3.装饰类对象在主类中接受请求,将请求发送给真实的对象(相当于已经将引用传递到了装饰类的真实对象) 4.装饰者可以在传入真实对象后,增加一些附加功能(因为装饰对象和真实对象都有同样的方法,装饰对象可以添加一定操作在调用真实对象的方法,或者先调用真实对象的方法,再添加自己的方法) 5.不用继承,   先用实例说话,最后再具体装饰者模式   假设要制造添加甜蜜…
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下: [java] view plaincopy public interface Sourceable { public void method(); } [java] view plaincopy public class Source im…
原创文章,转载请标注出处:<Java设计模式系列-装饰器模式> 一.概述 装饰器模式作用是针对目标方法进行增强,提供新的功能或者额外的功能. 不同于适配器模式和桥接模式,装饰器模式涉及的是单方,和代理模式相同,而且目标必须是抽象的. 而实际上,装饰器模式和代理模式的实现方式基本一致,只在目标的存在上有些差别,这个后面我们具体讲述. 二.初步分析 上面提到了两点: 涉及的是单方 目标是抽象的 我们来想一下,所谓单方主要指的是在整个装饰器模式中不存在双方调用,要解决的也不是双方调用的问题,而是解决…
1.装饰器模式的定义(保持接口,扩展功能) Decorate装饰器,顾名思义,就是动态的给一个对象添加一些额外的职责,就好比对房子进行装修一样. 2.装饰器模式的特征 具有一个装饰对象. 必须拥有与被装饰对象相同的接口. 可与给被装饰对象添加额外的功能. 3.装饰器模式的典型应用,java.io包 4.装饰器模式的代码示例 /** * @Author long * @Date 2019/3/20 21:29 */ public interface SourceAble { void operat…
装饰者模式 Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案. 装饰者与被装饰者拥有共同的超类,继承的目的是继承类型,而不是行为 比如现在有个方法,是过滤文字的方法 1.接口: package com.qiao.wrapper; public interface MessageBoardHandler { public String filter(String msg); } 2.继承者 package com.qiao.w…
设计模式不管对于何种语言都是存在的,这里介绍的是java的模式 装饰者模式是在二次开发中应用比较多的一款模式,当然了用反射也是可以实现的,今天介绍的是装饰模式,有兴趣的朋友可以自己去了解一下反射是怎么实现的. 在实际的开发中是无法拿到源码的,代码的可使用性也被final了,所以最常见的二次开发(二次开发就是给原有的代码中对功能做一些增强)就是通过装饰模式来实现的效果,使用这个模式有一个前提就是:可以获取到装饰对象的实现的所有的接口才可以用此模式下面大家可以直接可以看代码了: 1 我这里先定义了一…
在JAVA I/O类库里有很多不同的功能组合情况,这些不同的功能组合都是使用装饰器模式实现的,下面以FilterInputStream为例介绍装饰器模式的使用  FilterInputStream和FilterOutputStream 首先,这两个都分别是InputStream和OutputStream的子类.而且,FilterInputStream和FilterOutputStream是具体的子类,实现了InputStream和OutputStream这两个抽象类中为给出实现的方法. 但是,F…
装饰者模式(Decorator Pattern): 概述:装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象 特点: (1) 装饰对象和真实对象有相同的接口.这样客户端对象就能以和真实对象相同的方式和装饰对象交互. (2) 装饰对象包含一个真实对象的引用(reference) (3) 装饰对象接受所有来自客户端的请求.它把这些请求转发给真实的对象. (4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能.这样就确保…
基本需求: 咖啡的种类有很多种,调料也有很多种,下单时,可以点单品咖啡也可以点单品咖啡+调料的组合,并计算下单时花费的金额 传统方式: 方式一 创建一个抽象类Drink,让所有的单品咖啡和组合咖啡都继承Drink类(组合很多) UML类图 如果新增加一个单品咖啡或者调料,类的数量就会倍增,产生类爆炸 方式二 创建一个抽象类Drink,在Drink类中将所有的调料聚合进去,再让我们的单品咖啡继承Drink类 UML类图 此种方式解决了类爆炸的问题,但是新增或者删除调料时,需要修改Drink类中的内…
转载:http://blog.csdn.net/yanbober/article/details/45395747 一.装饰者模式的定义 装饰者( Decorator )模式又叫做包装模式.通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案. 二.模式中包含的角色及其职责 抽象组件角色: 一个抽象接口,是被装饰类和装饰类的父接口. 具体组件角色:为抽象组件的实现类. 抽象装饰角色:包含一个组件的引用,并定义了与抽象组件一致的接口. 具体装饰角色:为抽象装饰角色的实现类.负责具体…
装饰器模式的作用 在不修改原先对象核心的功能的情况下,对功能进行增强. 增强对象的功能的途径 通过类继承的方式,对父对象进行增强操作,例如造车是父类,改装跑车,跑车加大灯,改装房车,房车加私人电影院.如图: 通过这种方式做的装饰类会因为业务的复杂性激增 2.通过装饰模式,将方法增强.如图 装饰模式架构 car :被装饰的抽象类 package javadesign.decorate; /** * 抽象小汽车 */ public interface Car { public void buildC…
目录 应用场景 代码示例 改进代码 装饰者模式 定义 意图 主要解决问题 何时使用 优缺点 孙悟空的七十二变 应用场景 京东.天猫双十一,情人节商品大促销,各种商品有不同的促销活动 满减:满200减50 每满减:每满100减10 打折:买两件8折,三件7折 数量减:满三件减去最低价的一件 假设现在顾客买了两件衣服先是打了8折,然后又满200减了50,促销活动多重叠加了,该如何灵活实现订单金额计算? 代码示例 PromotionAlgorithm接口,计算订单金额: public interfac…
本篇主要是记录自己所理解的Java异常处理机制(基于jdk1.7)以及怎么去处理和设计异常.还记得当初学习Java异常这块的时候都没怎么注意它的用途,以为就是简单的处理下异常,我避免程序出现这样错误就行了(当初真的很懵懂很天真).当踏入社会工作后才知道一个好的异常处理框架是有多重要,比方说当你的项目投入使用的时候,当程序出错如何快速的定位到问题的根源(出了什么错,在哪出的错,为什么出错),这就跟你的异常处理的好坏有关了(当然离不开你的日志处理).在有效使用异常的情况下,异常类型会回答报的什么错,…
------- android培训.java培训.期待与您交流! ---------- 装饰设计模式: 当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能. 那么自定义的该类称为装饰类. 装饰类通常会通过构造方法接收被装饰的对象. 并基于被装饰的对象的功能,提供更强的功能. 装饰模式比继承要灵活.避免了继承体系臃肿. 而且降低了类于类之间的关系. 装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能. 所以装饰类和被装饰类通常是都属于…
代理模式是对象的结构模式.代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务 代理模式的结构 所谓代理,就是一个人或者机构代表另一个人或者机构采取行动.在一…
一:单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 单例设计模式的特点: 单例类只能有一个实例 单例必须创建对象 单例类需要对外提供该对象 核心知识点如下: 将采用单例设计模式的类的构造方法私有化(采用private修饰). 在其内部产生该类的实例化对象,并将其封装成private static类型. 定义一个静态方法返回该类的实例. 二:单例式的分类 1.饿汉模式: 优点是: 写…
1.MVC开发模式 本文用 Servlet+JSP+javaBean 的开发模式来讲解 Model:用javabean实现,用于封装业务数据View:用jsp实现,用于显示数据Controller:用servlet实现,用于控制model和view 图1: 图2: 2.三层架构 1.Dao层:和数据访问的相关操作  2.Service层:和业务逻辑相关的操作  3.Web层:和用户直接交互相关操作(传递参数,跳转页面) 原创作者:DSHORE 作者主页:http://www.cnblogs.co…
直接插入排序(Straight Insertion Sorting)的基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的.如此反复循环,直到全部排好顺序. 复杂度:时间复杂度  O(n2) ,空间复杂度O(1) 稳定性: 插入排序是稳定的,排序前后两个相等元素相对次序不变(能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同.在简单形式化一下,如果Ai = Aj, Ai原…
1. 装饰者模式的详解 装饰者模式动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性 的替代方案. 装饰者模式设计类之间的关系: 其 中Component是一个超类,ConcreteComponen是被装饰者,Decorator是装饰者,装饰者和被装饰者有共同的超类 Component,但是此时我们发现Decorator和Component还有另外一条线,这条线表示Decorator还要组合 Component. 在我看来装饰的模式中这几个类的主要作用如下: 首先我们看一个这样的…
package shb.java.demo; /** * 测试装饰者模式 * @package :shb.java.demoJava02 * @author shaobn * @Describe : * @Time: 2015-9-9 上午12:17:00 */ public class TestDecrator { /** * @author shaobn * @Describe : * @param args * @Time : 2015-9-9 上午12:16:49 */ public s…
前言 Java里面的I/O这一部分看过很多遍,每次看完之后特别混乱,又是输入流,又是输出流,又是字符流,又是字节流,还有什么过滤流,缓冲流.每次看得我如入云里雾里,直到后面看了设计模式这一块,才算真正的对Java I/O这一块有了整体的了解,理解起Java流也就容易许多.这篇博客先介绍装饰者模式,然后结合Java流看看装饰者模式如何应用到Java流中的. 装饰者模式 装饰者模式:动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案.在如下三种情况下可以选择使用装饰者模式.…