随笔分类 -  Java设计模式

摘要:装饰者模式的定义 动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案 装饰者模式的UML类图 一般来说装饰者模式有下面几个参与者: Component:装饰者和被装饰者共同的父类,是一个接口或者抽象类,用来定义基本行为 ConcreteComponent:定义具体对象,即被 阅读全文
posted @ 2019-01-27 11:18 菜鸟奋斗史 阅读(528) 评论(0) 推荐(0) 编辑
摘要:代理设计模式 定义:为其他对象提供一种代理以控制对这个对象的访问。 动态代理使用 java动态代理机制以巧妙的方式实现了代理模式的设计理念。 代理模式示例代码 public interface Subject { public void doSomething(); } public class R 阅读全文
posted @ 2016-04-28 17:07 菜鸟奋斗史 阅读(888) 评论(0) 推荐(0) 编辑
摘要:责任链模式 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。To 阅读全文
posted @ 2016-04-25 21:57 菜鸟奋斗史 阅读(35844) 评论(4) 推荐(5) 编辑
摘要:观察者模式 Observer的定义 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。 第一部分 这里有一个例子,是马士兵老师在讲解观察者模式的时候给出的例子,个人认为对理解观察者模式有很大的 阅读全文
posted @ 2016-04-25 14:32 菜鸟奋斗史 阅读(1293) 评论(0) 推荐(4) 编辑
摘要:1.概念 为子系统中的一组接口提供一个统一接口。Facade模式定义了一个高层接口,这个接口使得这子系统更容易使用。 2.UML 3.代码 下面是一个具体案例的代码: 4.应用场景 1)为一个复杂子系统提供一个简单接口。 2)提高子系统的独立性。 3)在层次化结构中,可以使用Facade模式定义系统 阅读全文
posted @ 2016-04-20 21:10 菜鸟奋斗史 阅读(609) 评论(0) 推荐(0) 编辑
摘要:中介者模式(Mediator)的定义 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式(Mediator)的适用性 1.一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解。 2.一个 阅读全文
posted @ 2016-04-20 19:09 菜鸟奋斗史 阅读(8800) 评论(0) 推荐(0) 编辑
摘要:命令模式(Command)的定义 将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作,将”发出请求的对象”和”接收与执行这些请求的对象”分隔开来。 命令模式(Command)的适用性 1.抽象出待执行的动作以参数化某对象。 2.在不同的时刻指定、 阅读全文
posted @ 2016-04-20 18:23 菜鸟奋斗史 阅读(4727) 评论(0) 推荐(0) 编辑
摘要:适配器模式的定义 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(就类似于我们充电器的转接头将220V的电压转换成我们的手机端可以接收的电压3.5-4.2之间) 曾经有一个面试题:问I/O流中的InputStreamReade 阅读全文
posted @ 2016-04-19 16:53 菜鸟奋斗史 阅读(616) 评论(1) 推荐(0) 编辑
摘要:桥接模式(Bridge)的定义 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?这就要使用桥接模式 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接模式(Bridge)的动机 当一种抽象类型可能有多种实现方式时,一般情况我们可以考虑使用 阅读全文
posted @ 2016-04-19 15:40 菜鸟奋斗史 阅读(708) 评论(0) 推荐(0) 编辑
摘要:状态模式(State)的定义 定义对象间的一种一对多的依赖关系,当一个对象的状态(对象内部的属性,可以理解成是对象的某个字段或者方法)发生改变时,所有依赖于它的对象都得到通知并被自动更新。允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类 状态模式(State)适用性 1.一个对 阅读全文
posted @ 2016-04-18 16:22 菜鸟奋斗史 阅读(25671) 评论(7) 推荐(4) 编辑
摘要:工厂模式将大量有共同接口的类实例化,工厂模式可以实现动态决定实例化哪一个类的对象,工厂模式在《Java与模式》中分为三类:1)简单工厂模式(Simple Factory):添加某一种类型的产品方便,不利于产生系列产品;2)工厂方法模式(Factory Method):又称为多形性工厂;3)抽象工厂模 阅读全文
posted @ 2016-04-15 09:47 菜鸟奋斗史 阅读(526) 评论(0) 推荐(1) 编辑
摘要:单例模式的定义 一个类有且仅有一个实例,并且自行实例化向整个系统提供。比如,多程序读取一个配置文件时,建议配置文件时,建议配置文件封装成对象。会方便操作其中的数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的。 单例模式的作用 简单说来,单例模式(也叫单件模式)的 阅读全文
posted @ 2016-04-13 10:45 菜鸟奋斗史 阅读(3811) 评论(2) 推荐(1) 编辑
摘要:迭代器模式定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。 迭代器模式的角色构成 (1)迭代器角色(Iterator):定义遍历元素所需要的方法,一般来说会有这么三个方法:取得下一个元素的方法next(),判断是否遍历结束的方法hasN 阅读全文
posted @ 2016-04-12 21:16 菜鸟奋斗史 阅读(19878) 评论(2) 推荐(2) 编辑
摘要:策略模式的定义: 定义了算法族,分别封装起来,让它们之间可以互相替换 ,此模式让算法的变化独立于使用算法的客户 策略模式的意义: 策略模式使开发人员能够开发出由许多可替换的部分组成的软件,并且各个部分之间是低耦合的关系。 低耦合的特性使软件具有更强的可扩展性,易于维护;更重要的是,它大大提高了软件的 阅读全文
posted @ 2016-04-11 20:14 菜鸟奋斗史 阅读(651) 评论(0) 推荐(0) 编辑
摘要:设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖 阅读全文
posted @ 2016-04-11 09:02 菜鸟奋斗史 阅读(430) 评论(0) 推荐(0) 编辑