设计模式
虫单
学习、分享、成长、坚持
展开
-
设计模式-策略模式
策略模式的例子:刘皇叔取老婆,军师三个锦囊,顺利娶回老婆 场景三要素:三个妙计、一个锦囊,一个赵云 赵云是一个干活的人,从锦囊取出妙计,执行 用JAVA程序表示,类图: 三个妙计是同一个类型的东西,那咱先写个接口:/** * Created by xpeng on 2018/4/30. * 首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口 */public ...原创 2018-04-30 13:56:03 · 133 阅读 · 0 评论 -
设计模式-建造者模式
现在有一个大合同,把奔驰、宝马的车辆模型都制作,有额外添加一个需求:汽车的启动、停止、喇叭声音、引擎声音都有客户自己的控制,他想什么顺序就什么顺序。 首先我们得思考了,奔驰宝马都是一个产品,他们有共有的属性。由我生产N多个奔驰和宝马车辆模型,这些车辆模型都有run方法,但具体到每一个模型的run方法可能中间的执行任务的顺序是不同的,客户需要啥顺序,我就给啥顺序,最终用户买走的只能是既定的模型。我...原创 2018-05-31 07:55:52 · 177 阅读 · 0 评论 -
设计模式-桥梁模式
今天我要说说我自己,梦想中的我自己,身家过亿,有两个大公司,一个房地产一个服装制造业,两个公司都很赚钱,天天帮我累加财富。我先用类图表示一下我这两个公司: 类图很简单,声明了一个Corp抽象类,定义一个公司的抽象模型,公司首先是要赚钱的,不赚钱谁开公司,先看Corp类的代码:package com.example.xpeng.myapplication;/** * Create...原创 2018-06-02 15:53:14 · 580 阅读 · 0 评论 -
设计模式-原型模式(Prototype Pattern)
我们今天来讲原型模式。我们先通过一个例子来解释一下什么是原型模式。 现在电子账单越来越流行,比如你的信用卡,到月初的时候银行就会发一份电子邮件到你的邮箱中,这个月消费多少,积分多少等等,每个月发一次,但是还有一种也是银行发的邮件你肯定有印象:广告信。电子账单系统一般包括:账单分析、账单生成器、广告信管理、发送队列管理、发送机、退信处理、报表管理等的一个子功能。我们今天来考虑游戏i啊广告信这个模块...原创 2018-06-24 02:10:46 · 959 阅读 · 0 评论 -
设计模式-中介者模式(Mediator Pattern)
中介者模式以实体超市(苏宁、国美等)正常运行的采购业务,销售业务,库存业务之间的配合为例子 先看类图: Purchase负责采购管理,buyIBMComouter是指定了采购IBM电脑,refuseBuyIBM是不再采购IBM了,程序如下:package com.example.xpeng.myapplication;import android.util.Log;/**...原创 2018-06-24 15:44:59 · 561 阅读 · 0 评论 -
设计模式-观察者模式
观察者模式例子:秦王嬴政让李斯监控韩非子 看看李斯怎么监控韩非子,先看类图: 我们来看程序的实现,先看我们的主角韩非子的接口(类似于韩非子这样的人,被观察者角色)package com.nextvpu.myapplication;/** * Created by NEXTVPU on 2018/6/10. * 类似韩非子这样的人,被监控起来了还不知道 */public...原创 2018-06-16 18:10:14 · 230 阅读 · 0 评论 -
设计模式-责任链模式
责任链模式例子:中国古代女子有“三从四德”的道德规范,就是说一个女性,在没有结婚的时候听父亲的,结婚了之后听丈夫的,丈夫死了听儿子的。要是想出去逛街了,需要请示。作为父亲、丈夫、儿子只有两种选择:要不承担起责任来告诉她允许或不允许逛街,要不就让她请示下一个人。我们来看怎么把“三从”通过我们的程序来实现,需求很简单:通过程序描述一下古代妇女的“三从制度”,好,我们老看类图: 非常简单的类图,这...原创 2018-06-16 21:46:34 · 229 阅读 · 0 评论 -
设计模式-组合模式
上大学的时候大家都学过“数据结构”这门课程吧,还记得其中有一节叫“二叉树”吧,考试的时候一定有二叉树的构建和遍历,树状结果在实际项目应用的非常广泛。 咱先说这个最常见的例子,公司的人事管理就是一个典型的树状结构,你想想你公司的结构是不是这样: 从最高的老大,往下一层一层的管理,最后到我们这层小兵,很典型的树状结构(这不是二叉树),我们今天的任务就是把这个树状结构实现出来,并且把它遍历一边,...原创 2018-06-10 17:59:00 · 186 阅读 · 0 评论 -
设计模式-访问者模式
今天来讲访问者模式,现在有这么一个需求,我要把公司中的所有人员信息都打印汇报上去,我们来看类图: 这个类图还是比较简单的,使用了一个模版方法模式,要把所有的信息都打印出来,我们先来看一下抽象类:package com.example.xpeng.myapplication;import android.util.Log;/** * Created by xpeng on 2...原创 2018-06-18 23:56:32 · 165 阅读 · 0 评论 -
设计模式-享元模式
内存溢出对java应用来说实在是太平常了,有以下两种可能。内存泄露 无意识的代码缺陷,导致内存泄露,JVM不能获得连续的内存空间对象太多 代码写的很烂,产生的对象太多,内存被耗完 业务需求,一个考试系统,登陆后需要填写一下信息:考试科目,选择框考试地点,选择框,根据科目不同,列表不同准考证邮寄地址,输入框 很简单的工厂方法模式,表现层通过工厂方法模式创建对象,然后传递给业...原创 2018-07-08 22:32:30 · 193 阅读 · 0 评论 -
设计模式-模版模式
模型模式例子:悍马车模型 不考虑使用设计模式,扩展性等都不考虑 类图: 非常简单的实现,你要悍马模型,我给你悍马模型,先写个抽象类,然后两个不同型号的模型实现类,那我们把这个程序实现出来: HummerModel抽象类的程序如下:package com.example.xpeng.myapplication;import android.util.Log;/** * ...原创 2018-05-30 00:22:48 · 3845 阅读 · 0 评论 -
设计模式-迭代期模式
现在有个需求,老大让我把项目信息重新打印一份,分析总结一下所有项目存在的问题和解决办法。 很快我设计了一个类图: 类图非常简单,是个程序员都能实现,我们来看看简单的东西:package com.nextvpu.myapplication;/** * Created by NEXTVPU on 2018/6/4. * 定义一个接口,所有的项目都是一个接口 */publi...原创 2018-06-04 21:10:15 · 338 阅读 · 0 评论 -
设计模式-适配器模式
适配器模式:笔记本上的适配器把不同的电压转换成你需要的,比如一个日本的是110V,一个中国的220V。设计模式中的适配器模式一样的作用两个不同的接口,有不同的实现,有一天必须把B接口转换成A接口,怎么办呢?就会用到适配器模式了。 适配器的通用类图如下: 有一个项目分为三大模块:人员信息管理的对象是所有员工的所有信息,然后设计如下类图: 现在需要加入一个借用人员管理,分三部分:基本信息...原创 2018-05-28 19:28:59 · 208 阅读 · 0 评论 -
设计模式-代理模式
代理模式:我很忙,没空理你,你要找我的代理人。代理人总要知道代理人哪些事情能做哪些事情不能做,那就是两个人具备同一个接口,代理人不能干活,被代理人能干活啊。 例子:西门庆找潘金莲,潘金莲“害羞”啊,咋办,那找代理人啊,嗯,王婆就很合适嘛。/** * Created by xpeng on 2018/4/30. * 定义一种类型的女人,王婆和潘金莲都属于这个类型的女人 */pub...原创 2018-04-30 14:37:01 · 111 阅读 · 0 评论 -
设计模式-单例模式
单例模式就是单一、独苗的意思。 举例:皇帝 /** * Created by xpeng on 2018/5/1. * 中国历史上一般只会有一个皇帝 */public class Emperor { private static Emperor emperor = null;//定义一个皇帝放在那里,然后给皇帝这个名字 private Emperor(){ ...原创 2018-05-01 14:51:29 · 130 阅读 · 0 评论 -
设计模式-多例模式
多例模式:有上限的多例模式(没上限的多例模式太容易了,和你直接new一个对象没啥区别,不讨论) /** * Created by xpeng on 2018/5/1. * 有时候当皇帝的是儿子其实还有一个太上皇啊 * 有上限的多例模式(没上限的多利模式太容易了,跟new个对象没啥区别) */public class Emperor { private static ...原创 2018-05-01 15:35:47 · 238 阅读 · 0 评论 -
设计模式-工厂方法模式
例子:女娲造人 类图: 这个过程我们就用程序来实现,首先定义一个人类的总称:/** * Created by xpeng on 2018/5/1. * 定义一个人类的统称 */public interface Human { //首先定义什么是人类 //人是会笑的 public void laugh(); //人类还会哭 publi...原创 2018-05-03 00:05:09 · 128 阅读 · 0 评论 -
设计模式-抽象工厂模式
上一次女娲造人忘记给人类定义性别了。 现在需要把八卦炉拆开,一个生产男性的八卦炉,一个是生产女性的八卦炉 /** * Created by xpeng on 2018/5/1. * 定义一个人类的统称 */public interface Human { //首先定义什么是人类 //人是会笑的 public void laugh(); //人类...原创 2018-05-05 23:18:36 · 174 阅读 · 0 评论 -
设计模式-状态模式
状态模式以电梯为例子 电梯有哪些动作(映射到Java中就有多少方法):开门、关门、运行、停止,就这四个动作,用程序来实现一下电梯的动作,先看类图设计: 非常简单的类图,定义一个接口,然后是一个实现类,然后业务类Client就可以调用,并运行起来,先看接口:package com.example.xpeng.statemode;/** * Created by xpeng on...原创 2018-05-20 16:54:45 · 493 阅读 · 0 评论 -
设计模式-命令模式
命令模式,这个模式从名字上看就很简单,命令嘛,老大发布命令,小兵执行就行咯。 以项目组为例子来讲命令模式 项目组的成员分工也是采用了常规的分工方式,分为需求组、美工组、代码组。现在有客户要我们做一个项目,客户和需求组讨论需求,和美工组讨论页面,和代码组讨论实现,告诉他们修改这里,删除这里,增加这些等等。 我们把这个模式用类图表示一下: 这个类图很简单,客户和三个组都有交流,这也合情合理...原创 2018-06-02 18:19:53 · 257 阅读 · 0 评论 -
设计模式-装饰模式
装饰模式在中国的使用那实在是多,说话办事都不能太直接,都需要装饰一下。以小时候成绩单需要签名来举例: 先看这个成绩单的类图: 成绩单的抽象类,然后有一个四年级的成绩单实现类,先看抽象类:package com.example.xpeng.myapplication;/** * Created by xpeng on 2018/6/2. * 成绩单的抽象类 */publ...原创 2018-06-02 23:46:43 · 162 阅读 · 0 评论 -
设计模式-门面模式
门面模式的例子:写信。写信的过程,先写信的内容,然后写信封,再然后把信放到信封中,封好送邮局。 这个过程还是比较简单的,但是虽然简单,万一你要给十个百个千个人写呢,麻烦咯。还好,现在邮局开发了一个新的业务,你只要把信件的必要信息告诉我,我给你发,我来做这四个过程,你就不要管了,只要把信给我就行了。 我们的类图还是从最原始的状态开始: 先看写信的过程接口,定义了写信的四个步骤:pa...原创 2018-05-26 23:24:50 · 111 阅读 · 0 评论 -
设计模式-备忘录模式
备忘录模式实例:《预见未来》中男主角可以预见未来,遇到女主角可以反复尝试打动女主角。 原始状态的保留和恢复这块,如何保留一个原始状态,如何恢复一个原始状态才是最重要的,那想想看,我们应该怎么去实现呢?很简单,我们定义一个中间变量,保留这个原始状态。我们先看看类图: 太简单的类图了,state表示所有的状态,changeState方法表示状态变化package com.nextvpu...原创 2018-06-28 21:40:00 · 146 阅读 · 0 评论