设计模式
坚持就有希望
他强任他强,我是路人王!
展开
-
设计模式之责任链模式
描述:古代女子是有“三从四德”的传统,就是说家里的女人有事情需要首先请示自己的父亲,然后是丈夫和儿子,优先级父亲>丈夫>儿子,假如父亲过世女子就要请示丈夫,如果丈夫过世,就要请示儿子。UML类图如下所示:测试代码如下:1、女性接口类package com.java.responsiblechain;public interface IWoman { publi原创 2017-05-10 09:47:12 · 215 阅读 · 0 评论 -
设计模式之访问者模式
描述:访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。UML类图如下:测试代码如下:1、访问者接口类package com.java.visitor;public interface IVisitor { public void visit(ConcreteElement1原创 2017-05-16 15:46:05 · 141 阅读 · 0 评论 -
设计模式之状态模式
描述:状态的变更促使行为的变化 UML类图测试代码1、抽象状态类package com.java.state;public abstract class State { protected Context context; public Context getContext() { return context; } public v原创 2017-05-17 15:07:40 · 126 阅读 · 0 评论 -
设计模式之享元模式
描述:java中的线程池技术用到了享元模式,共享相类似对象,降低了占用内存,提高了效率。本例以驾校考试报名系统为例UML类图测试代码1、享元类package com.java.flyweight;public class SignInfo { private String id; private String subject; private St原创 2017-05-17 16:19:58 · 186 阅读 · 0 评论 -
设计模式之适配器模式
描述:软件开发人力外包市场中,甲方有自己的一套人员管理系统,而乙方也有自己的一套管理系统,如果乙方派人力进驻到甲方工作,并且薪资待遇都按照甲方的要求,那么人员信息也要进驻到甲方的管理系统,乙方的那套系统就不能用了,这里就要将原来的乙方的管理系统适配成甲方要求的管理系统。适配模式分为类适配和对象适配,类适配要求适配器继承被适配的类且实现目标接口,而对象适配器是一种聚合,适配器依赖不同的被适配对象。原创 2017-05-09 11:17:43 · 191 阅读 · 0 评论 -
设计模式之命令模式
描述:软件开发中有个很经典的问题,开发的流程首先是需求工程师跟客户沟通整理出需求之后,将需求抛给软件工程师,然后软件工程师找相应的UI设计师进行相应的界面修改。命令模式说的是客户直接找一个代表(项目经理)进行整个项目沟通,项目经理直接将项目抛给组内人员(需求工程师,软件工程师及UI设计师),项目经理只负责整个项目的把控,具体细节开发就交给组内人员开发。这里的Invoker与Command的关系是聚原创 2017-05-09 10:09:38 · 239 阅读 · 0 评论 -
设计模式之桥梁(桥接)模式
描述:桥接模式最大特点是抽象与实现解耦,不对现有的类进行修改,只需要扩展(继承当前抽象类)即可实现业务逻辑。抛出的例子是现在有服装公司生产销售并服装盈利,电子公司生产电子产品销售并盈利,那我以后增加房地产公司就只需要继承Crop和Product就可以实现买房子销售盈利。UML类图:测试代码1、抽象Crop类package com.java.bridge;原创 2017-05-17 17:13:10 · 214 阅读 · 0 评论 -
设计模式之策略模式
描述:三国时期,孙权为了限制刘备,企图以招亲之名来软禁刘备,诸葛亮在刘备临走时叫赵云务必在情况危急之时打开锦囊,锦囊可以化解危急,这里具体锦囊是什么东西就不展开叙述了,我们可以当成是具体的策略(目的是救刘备)。有了锦囊还不够,必须还需要一个携带锦囊的人,那就是赵云,也是锦囊的执行者。策略和命令似乎看上去差不多,不过最大的区别是策略是同一个方法的不同算法,算法之间可以相互替换;而命令模式需要Rece原创 2017-05-09 10:53:38 · 218 阅读 · 0 评论 -
设计模式之代理模式
描述:场景是玩游戏打怪升级,这里的代理就是找一个代练玩家,比较常用到的代理模式有普通代理,强制代理以及动态代理,普通代理好比我自己(游戏玩家)直接找到代练玩家给他账号密码代练就可以了(做的事情无非就是登陆,打怪及升级),强制代理好比必须通过先找到游戏代练公司,代练公司有捆绑好的代练玩家帮你去代练。动态代理就是在程序运行过程中才会生成代理类,好处就是能够统一处理被代理对象的方法,比如在被代理对象的所原创 2017-05-08 10:33:34 · 173 阅读 · 0 评论 -
设计模式之抽象工厂方法
描述:女娲造人的故事想必大家都知道,在之前文章中已经提到过工厂方法模式,女娲造出来三种肤色的人类,分别会说英语,拉丁语以及汉语,但是造出的人类有个缺陷,没有男女性别之分,因此,女娲要想办法使造出来的人类性别是男或者女,因此,女娲想出来一个办法,将造人仓库分为男性仓库和女性仓库,男性仓库负责造男性黑人,男性白人,男性黄人;女性仓库负责造女性黑人,女性白人,女性黄人。UML类图如下(以两种产品为例原创 2017-05-07 11:35:51 · 949 阅读 · 0 评论 -
设计模式之观察者模式
描述:战国时期,秦始皇为了监视各诸侯国,吩咐李斯派卧底监视韩国韩非子。韩非子一有情况卧底就会通知给李斯,李斯就向秦始皇汇报当前情况;这样的模式被称之为观察者模式。韩非子就是所谓的Subject(被观察者),李斯就是Observer(观察者),观察者可以是多个。有了观察者和被观察者还不够,必须通过卧底来连接观察者和被观察者,也就是说李斯必须将自己的卧底派到韩国盯着韩非子,韩非子一有情况就派卧底通知李原创 2017-05-06 17:46:36 · 163 阅读 · 0 评论 -
设计模式之工厂方法
描述:女娲造人是个很经典的工厂方法模式的例子,女娲造出来的人分为白种人,黑种人及黄种人,暂时不考虑性别,语言分别分为英语,拉丁语和汉语。那么,这里我们将造人的仓库就作为生产工厂,不同肤色的人为产品。女娲造人的仓库具体的实现由仓库的子类(造人仓库)去实现UML模型如下所示:具体代码:1、产品的抽象接口package com.java.factorymethod;pub原创 2017-05-06 15:46:51 · 240 阅读 · 0 评论 -
设计模式之组合模式
描述:通常公司的组织架构就是一种树状结构,根节点是总经理或者董事长,总经理下面是财务总监,研发总监,人力总监,市场总监等。将没有子节点的节点称为叶子节点,有子节点的节点称为树状节点。这种将对象以树状结构展示的整体与部分之间的关系称之为组合模式。UML类图如下:PS:具体代码不做详细介绍原创 2017-05-11 16:37:30 · 200 阅读 · 0 评论 -
设计模式之装饰模式
描述:记得小学每次看完试,老师就会要求我们拿着成绩单找家长签名,成绩考的好的学生虚荣心得到无限满足,不过成绩差的学生就倒霉了,每次家长看到成绩单就会被教育或者是挨骂,都已经习以为常了。有什么办法能使成绩差的学生能够摆脱这种现状呢,答案当然是肯定,用设计模式中的装饰模式就能实现这个愿望。装饰模式可以这样理解,学生找家长签字,家长看的无非就那几个数字,只要在数字前面或者后面添加一些内容(这里称为装饰者原创 2017-05-11 17:24:24 · 190 阅读 · 0 评论 -
设计模式之模板方法
描述:奔驰宝马的设计首先要设计出车辆模型,然后再去做其他事情,车辆模型好比就是模板,例如奔驰与宝马基本的功能,启动,引擎,停止,喇叭等都一样,但是具体的实现上会有差别,模板方法就是有这样一个抽象类,抽象类中定义一些一般方法(启动,引擎,停止,喇叭),还包括模板方法,模板方法相当于对一般方法调用顺序的算法。UML类图:测试代码如下:1、抽象模板类package com原创 2017-05-12 16:47:34 · 254 阅读 · 0 评论 -
设计模式之建造者模式
描述:上一篇文章模板方法讲的抽象类中的普通方法可以在子类实现,按照需求可以实现自己的方法,算法是保持不变的;建造者模式跟模板方法不同之处是抽象类中的算法可以按需修改。UML类图如下:测试代码:1、建造的产品抽象类package com.java.builder;import java.util.ArrayList;import java.util.Li原创 2017-05-13 10:45:27 · 146 阅读 · 0 评论 -
设计模式之原型模式
描述:原型模式说白了就是拷贝一个已知对象,核心方法是实现了Cloneable接口的clone()方法,分为浅拷贝和深拷贝,两者区别在于浅拷贝只是复制了对象,而内部数据是共享的,而深拷贝是数据不共享;UML类图如下:测试代码如下:1、实现Cloneable接口对象package com.java.prototype;import java.util.ArrayLi原创 2017-05-13 12:27:09 · 169 阅读 · 0 评论 -
设计模式之中介者模式
描述:中介者模式在我们日常生活中出现的频率比较多,例如现在市场上出现的房产中介,买家或者卖家都可以自己独立去找房子或者卖房子,还可以通过中介的方式去买房或者卖房,通过中介的方式买家和卖家必须把自己信息注册到中介Mediator中,当买家需要通过中介的方式买房时,买家先找到自己注册的中介,然后通过中介找到合适的卖家。UML类图如下:测试代码如下:1、中介抽象类原创 2017-05-15 14:56:58 · 185 阅读 · 0 评论 -
设计模式之门面(外观)模式
描述:外观模式的含义是子系统只允许被Facade访问,举个例子,现在去银行办卡只需要提供给身份证,手机号,地址以及办卡类别,其他一切都不需要自己动手,自动办卡机就能吐出一张新卡。外观模式示意图如下:UML类图如下:测试代码如下:1、办卡接口类package com.java.facade;public interface ProcessCard原创 2017-05-15 16:26:58 · 331 阅读 · 1 评论 -
设计模式之备忘录模式
描述:备忘录模式顾名思义将当前状态保存,在未来某个时刻将状态恢复。例如男孩子追女孩子,男孩子备份追女孩之前保持的状态,然后就去追女孩子,如果尝试方式一追女孩子失败,则将男孩子状态恢复;接着男孩子尝试方式二追女孩子,如果还是失败,则将男孩子状态恢复...;要实现这个过程,需要三个角色,分别是发起追女孩子的角色,存储状态的角色,管理状态的角色。UML类图测试代码:1、发起人原创 2017-05-15 18:17:45 · 193 阅读 · 0 评论 -
面向对象设计的七大原则
1.开放封闭原则:对接口的修改是封闭,但是对接口的扩展是开放2.里氏转换原则:任何基类可以出现的地方,子类一定可以出现。即超类存在的地方,子类是可以替换的。替换后行为不变,结果会变化。调用子类行为。子类和父类必须有相同行为才能完全地实现替换。实现开闭原则的关键是抽象化,而里氏代换原则中的基类和子类的继承关系正是抽象化的具体体现,所以里氏代换原则是对实现抽象化的具体步骤的规范。3.依赖倒转原...原创 2019-08-28 11:07:13 · 114 阅读 · 0 评论