设计模式
大话设计模式的Java实现。。
徐伯莱
Stay Hungry, Stay Foolish.
展开
-
命令模式
我们都知道路边烧烤,在生意好的时候最赚钱。其实这时候也是烤肉师傅最难受的时候,为什么呢?忙的时候比较混乱,很容易造成分发错误、收钱错误、烧烤质量不佳等问题。相比,那些烤肉店呢,就不会出现这种情况,这是为什么呢?仔细想想,烤肉店都会有服务员,他们负责记录顾客的菜单。同时,如果顾客需要增加订单、取消订单。显然只需要告诉服务员,服务员则在日志(那本小本本)上修改即可。这就是有没有服务员的不用样。看似没多...原创 2018-06-11 13:12:28 · 723 阅读 · 0 评论 -
职责链模式
没一个公司对请假都是控制的很严格,必须要相关的人员签字。三天,主任签字;三到七天,经理签字;一个星期副总经理签字;以上总经理签字。模式定义 职责模式:使多个对象都有机会处理请求,从而避免请求的发送者与接收者之间的耦合关系。将这个对象连成一条链。并沿着这条链传递该请求,直到有一个对象处理为止。 在职责链模式中最关键的一点就是客户提交请求后,请求沿着链往下传递直到有一个处理者处理它...原创 2018-06-12 23:29:55 · 2123 阅读 · 0 评论 -
桥接模式
模式定义模式结构模式实现使用场景模式优缺点模式总结原创 2018-06-11 01:09:46 · 539 阅读 · 0 评论 -
单例模式
在程序开发中,有些对象我们只需要一个,比如说:线程池、对话框、缓存等。如果我们实例化多个对象就可能会出错。那么怎样才能保证一个类只有一个实例化对象呢?这里我们想到了全局变量,全局变量确实是可以保证该类可以随时访问,但是它很难解决只有一个实例问题。最好的办法就是让该自身来负责保存它的唯一实例。这个类必须要保证没有其他类来创建它。这里我们可以将其构造方法私有化。模式定义所谓单例模式就是确保某一个类只有...原创 2018-06-10 17:40:06 · 562 阅读 · 0 评论 -
迭代器模式
很多人认为今天看迭代器模式使用价值远不如学习价值了,Martin Flower 甚至在在自己的网页上提出撤销此模式。当然这种说法也不无道理,因为现在像高级语言如C# 、java 等已经把这个模式做在语言中了。但是这个模式就真的如网上所言没有实用价值了吗?我并不认为是这样的。 本文将介绍这种模式与其它模式搭配使用 适配器-迭代器模式。至于有没有用评判在你 希望于你有益~模式背景 有两家餐...原创 2018-06-10 12:03:40 · 741 阅读 · 0 评论 -
组合模式
在开发常见的OA系统,只要总公司采用这种模式的话,各个分公司都会采用,在开发时如何解决这样的问题呢?仔细想来,总公司跟分公司的关系:部分-整体。我们希望总公司的人力资源部,财务部可以复用到分公司,这其实就是整体与部分可以被一直对待的问题。科普办公自动化(OA)是面向组织的日常运作和管理,员工及管理者使用频率最高的应用系统,自1985年国内召开第一次办公自动化规划会议以来,OA在应用内容的深度与广度...原创 2018-06-09 21:10:51 · 313 阅读 · 0 评论 -
备忘录模式
模式定义备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个对象。这样以后就可将该对象恢复到原先保存的状态。 模式结构模式实现发起人类package com.bjsxt.memento;public class Originator { private String state; public String getState() { re...原创 2018-05-23 17:35:18 · 209 阅读 · 0 评论 -
适配器模式
在NBA现役中锋期,姚明也算是一个天才吧。姚明NBA打球,交流是一个很大的的问题,那么怎么解决呢?为他配一个翻译啦。这里就和软件工程中的一个模式很相似,适配器模式。模式定义适配器模式(Adapter),将一个类的接口装换成客户希望的另外一个接口。Adapter模式使得原本不兼容而不能在一起工作的那些类可以一起工作。【DP】模式结构模式实现球员package com.bjsxt.adapter;...原创 2018-05-22 19:32:32 · 2052 阅读 · 0 评论 -
状态模式
模式定义状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。【DP】模式结构模式实现抽象状态package com.nchu.state;abstract class State { public abstract void writeProgram(Work w);}上午工作package com.nchu.state;/** * 上午...原创 2018-05-22 12:52:30 · 247 阅读 · 0 评论 -
用反射改善抽象工厂模式
由于抽象工厂已经在前面介绍过了,这里直接补上如何用反射实现。模式结构模式实现引入反射package com.nchu.abstractFactory;public class DateAccess { private static String assemblyName = "com.nchu.abstractFactory.SqlserverDepartment"; private s...原创 2018-05-21 18:47:48 · 794 阅读 · 0 评论 -
抽象工厂模式
模式定义抽象工厂模式(Abstract Factory),提供了一个创建一系列相关或者相依赖对象的接口,而无须制定他们的具体类型。模式结构模式实现使用场景模式优缺点模式总结...原创 2018-05-21 13:48:55 · 308 阅读 · 0 评论 -
观察者模式
模式定义模式结构模式实现使用场景模式优缺点模式总结原创 2018-06-10 17:52:42 · 332 阅读 · 0 评论 -
建造者模式
客机已经是很常见的交通工具了,对于每一位乘客来讲,我们不用关心飞机内部的复杂构造(发动机、轨道舱、逃离塔)。只需要根据知道客机可以用于交通运输。对于用户而言我们总是希望我们在使用对象时足够简单,如果一个复杂的对象直接丢给用户,用户会是痛苦不堪的(给你一堆部件,你来组装成一架飞机看看),除了这个构建的过程外,可能用户会忘记某些成员属性。所以我们就希望能够像乘坐飞机一样使用复杂的对象:直接告诉你我需要...原创 2018-05-16 16:51:57 · 300 阅读 · 1 评论 -
外观模式
“炒股票是一件很常见的事,但是没有足够了解证券知识的情况下去做股票,很容易亏钱。毕竟要学的东西太多了,不具备这些知识就很难做好,再者就是心态很重要,刚开始接触股票的人一般都盼着涨,于是心态很不稳定,这反而做不好股票。但是,我们可以交给基金来管理啊。。。”这其实就是一个设计模式,外观模式。模式定义 所谓外观模式就是提供一个统一的接口,用来访问系统中的一群接口。这个接口使得这一群接口易于...原创 2018-05-15 20:11:52 · 460 阅读 · 0 评论 -
模板方法模式
模式定义 所谓模板方法模式就是在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模板方法模式是基于继承的代码复用技术的。在模板方法模式中,我们可以将相同部分的代码放在父类中,而将不同的代码放入不同的子类中。也就是说我们需要声明一个抽象的父类,将部分逻辑以具体方法以及具体构造函数的形式...原创 2018-05-14 22:25:47 · 240 阅读 · 0 评论 -
工厂方法模式
基本定义定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。简单工厂VS工厂方法简单工厂模式最大的优点在于工厂类中包含必要的逻辑判定,根据客户端的选择动态实例化相关的类,相对于客户端来讲,去除了与具体类产品的依赖。工厂方法模式的实现,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的。也就也是说工厂方法模式把简单工厂的内部逻辑判断搬移到客户端代...原创 2018-05-12 16:49:41 · 335 阅读 · 0 评论 -
原型模式
基本定义原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。在原型模式中,所发动创建的对象通过请求原型对象来拷贝原型对象自己来实现创建过程,当然所发动创建的对象需要知道原型对象的类型。这里也就是说所发动创建的对象只需要知道原型对象的类型就可以获得更多的原型实例对象,至于这些原型对象时如何创建的根本不需要关心。 讲到原型模式了,我们就不得不区分两个概念:深拷贝、浅...原创 2018-05-13 21:47:42 · 778 阅读 · 0 评论 -
代理模式
基本定义为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理模式可以在客户端和目标对象之间起到中介作用。何种情况使用? (1)远程代理,也就是为一个对象在不同地址空间提供局部代表。这样可以隐藏一个对象在不同地址看空间的事实。【DP】。 (2)虚拟代理,根据需要创建很大的对象。通过它来存放实例化需要很长时间的真实对象...原创 2018-05-11 17:20:32 · 295 阅读 · 0 评论 -
装饰者模式
基本定义 动态的给一个对象添加一些额外的职责,就增加功能来讲,装饰模式比生成子类跟家灵活。【DP】何种情况使用? 当系统需要新功能的时候,是向旧的类中中添加新的代码。这些新加的代码通常用装饰了原有类的核心职责或主要行为。装饰模式的优点 1、把类中的装饰功能从类中搬移去除,这样可以简化原有的的类。 2、更大的好处在于有效的把类核心职责和装饰功能区...原创 2018-05-10 23:16:44 · 299 阅读 · 0 评论 -
策略模式
策略模式策略模式是一种定义一系列算法的方法,从概念上来看,所有的这些算法完成的都是相同的工作,只是实现不同,他们可以以相同的方式调用所有的算法,减少了各类算法类与使用算法类之间的耦合。【DPE】优点 (1)策略模式的Strategy类层次Context定义了一系列可供重用的算法或行为。继承有助于析取出这些算法的公共功能【DP】 (2)简化了单元测试,因...原创 2018-05-01 16:16:52 · 396 阅读 · 0 评论 -
简单工厂模式
简单工厂模式简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。优点工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使...原创 2018-05-01 13:31:25 · 383 阅读 · 1 评论