设计模式(Java)
文章平均质量分 93
楊帥
【此人归隐已久♂不懂凡尘落寞】
展开
-
设计模式六大原则(六)迪米特法则
定义:迪米特法则(Law of Demeter)又叫做最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写LoD。来源历史:1987年秋天由美国Northeastem University 的 lan Holland 提出,被UML的创始者之一Booch等普及。后来,因为在经典著作《The P...原创 2019-01-04 16:22:07 · 389 阅读 · 0 评论 -
Java设计模式之外观模式
Java23种设计模式当系统拥有多个子系统的时候,为了方便客户使用,结构上封装一层统一调用的外观,这种模式叫做外观模式。需求:开机关机的时候,对功能进行封装:启动电脑(按一下电源键):启动CPU、启动内存、启动硬盘关闭电脑(按一下电源键):关闭硬盘、关闭内存、关闭CPU定义CPU类、内存类、硬盘类,分别都具有启动和关闭方法public class CPU { pub...原创 2019-05-08 13:39:37 · 595 阅读 · 0 评论 -
Java设计模式之代理模式
Java23种设计模式动态生成一个子类, 然后子类覆盖代理类中的方法。代理模式的特点:代理者和被代理者有共同的方法代理者持有被代理者对象需求:小孩子犯错误了,会通知监护人,小孩也同时受到惩罚。创建代理接口,里面有一个共同的事件接受惩罚。public interface Agent { void punish();}创建孩子类,里面有一个事件是接受惩罚。...原创 2019-05-08 14:02:56 · 119 阅读 · 0 评论 -
Java设计模式之适配器模式
Java23种设计模式将不符合要求的对象适配成符合要求对象的一种模式。适配器模式不是在设计项目时候考虑的,而是解决项目运行的问题时候添加。需求:现有一家苹果店和一家香蕉店,用户需要到苹果柜台购买苹果,香蕉柜台购买香蕉,现在需要整合成一个柜台,既可以卖苹果又可以买香蕉。创建水果接口,里面有购买方法public interface Fruit { void buy();...原创 2019-05-08 15:15:55 · 155 阅读 · 0 评论 -
Java设计模式之装饰模式
Java23种设计模式装饰模式是不改变原来对象的基础上对原对象的拓展。装饰模式修饰过的对象,本体不变,只对功能进行拓展。一般来说,对象被多次装饰之后,只保留最后一次的装饰属性(否则不如用继承)。需求:孙悟空七十二变,孙悟空本身是猴子,可以变成鸟和鱼。变身之后他拥有了鱼和鸟的属性,鱼和鸟的属性只是对猴属性的一种装饰,但是他本身依然是猴子而不是鱼或者鸟。创建美猴王接口,里面有变化的...原创 2019-05-08 16:25:50 · 238 阅读 · 0 评论 -
Java设计模式之桥模式
Java23种设计模式桥模式用于抽象(abstraction)与实现(implementation)功能的解耦,使复杂的项目逻辑简单化,符合迪米特法则。需求:小明主业是厨师,同时他也喜欢唱歌,但是我们不想把两个属性写到一起。创建歌手接口,里面有唱歌的方法。public interface Singer { void sing();}创建小明唱歌类,里面小明唱了一首我...原创 2019-05-08 17:10:51 · 140 阅读 · 0 评论 -
Java设计模式之享元模式
Java23种设计模式享元模式通过对象的复用,减少创建对象对性能的消耗,并且减少系统中对象的数量,节约内存。要根据实际需求情况复用对象,只有被复用对象确定无用才可以。实际运用中注意线程安全问题。需求:我们做人口普查,调查人口的年龄,这种情况下,我们只需要每次调查都修改个人的档案就可以,不需要每次调查都为每个人创建一个档案。创建人口档案,里面记录人的姓名和年龄public c...原创 2019-05-08 18:02:02 · 201 阅读 · 0 评论 -
Java设计模式之迭代器模式
Java23种设计模式迭代器模式用于访问顺序集合对象,无需考虑集合中的表示。符合 单一职责原则 和 迪米特法则 模仿ArrayList实现功能,创建一个对象MyList,里面包含一个数组,对外只开放一个迭代器Iterator用来遍历,其他功能不开放。创建Iterator对象,内部包含haseNext()、next() 方法public interface Iterator { ...原创 2019-05-06 10:59:13 · 168 阅读 · 0 评论 -
Java设计模式之模板方法模式
Java23种设计模式模板方法模式基于继承关系,功能为构件骨架、提取逻辑以及功能实现的公共部分,不确定功能交给字类实现。需求:现在要建立多套房子,每套房子造型选材格局都不同,但是所有用户都需要统一的报价。创建材料接口,接口目前功能就是获取材料的报价。public interface Material { int getPrice();}创建模板方法类,包含一个Mat...原创 2019-05-06 13:39:35 · 164 阅读 · 0 评论 -
Java设计模式之命令模式
Java23种设计模式创建一个命令,内部持有请求对象,调用者持有命令的统一调用,实现调用者和请求之间的解耦。需求:我们点击一个按钮,然后view上面显示字HelloWorld!,按照命令模式我们会这么设计。创建请求,我们的请求就是显示HelloWorld!public class Request { public void setHelloWorld(){ ...原创 2019-05-06 16:05:43 · 180 阅读 · 0 评论 -
Java设计模式之状态模式
Java23种设计模式状态模式把所研究的对象的行为包装在不同的状态对象里,对象内部状体发生改变,调用不同的状态对象,行为也发生改变。需求:点击一个按钮三次,依次显示StateA、StateB、StateC。定义State接口,里面有一个show()public interface State { void show();}定义StateA、StateB、State...原创 2019-05-06 18:02:40 · 179 阅读 · 0 评论 -
Java设计模式之策略模式
Java23种设计模式策略模式把所研究的对象的算法包装在不同的策略对象里,策略对象改变计算的结果也会发生改变。需求:分别打印出10+5、10-5、10*5、10/5的值。首先创建策略接口,内部一个计算方法。public interface Strategy { int calculation(int num1,int num2);}创建加减乘除策略类public...原创 2019-05-06 18:34:40 · 188 阅读 · 0 评论 -
Java设计模式之中介者模式
Java23种设计模式定义:中介者模式为多个互相关联的对象提供服务,使多个对象都与中介者关联,实现对象之间的解耦。需求:QQ聊天功能,有用户ABCD,其中任意两人之间均可聊天,也可以建群一个人说话所有人都收到。创建用户接口,用于接收信息public interface User { void showMessage(String msg);}创建ABCD四个用户实...原创 2019-05-07 11:23:40 · 726 阅读 · 0 评论 -
Java设计模式之访问者模式
Java23种设计模式访问者模式包含两个元素:访问者、被访问者。其中根据访问者的不同,被访问者提供的数据也不同。访问者模式主要实现方法为:静态重载,访问方法重载多个被访问者条件。有三个工厂ABC可以生产手机和笔记本电脑两种产品,现在有两个经销商过来订货,分别制作笔记本电脑和手机。创建工厂接口,里面有绑定经销商的方法。public interface Factory { v...原创 2019-05-07 15:45:23 · 349 阅读 · 0 评论 -
Java设计模式之解释器模式
Java23种设计模式定义:一种语法分析工具,用来分步解释一个复杂的运算过程。需求:计算(1+2)*(3+4)的值。必备元素:抽象解释器:声明所有表达式都要实现的方法。(接口)终结符表达式:复杂运算的最小单元(例子中的1+2和3+4都是)非终结符表达式:计算终结符表达式的表达式(例子中的*操作)环境角色:输入1、2、3、4的类。创建解释器接口,里面包含一个解释操作的方法...原创 2019-05-07 18:15:29 · 219 阅读 · 0 评论 -
Java设计模式之原型模式
Java23种设计模式原创 2019-05-05 18:26:52 · 147 阅读 · 0 评论 -
Java设计模式之组合模式
Java23种设计模式组合模式就是对象嵌套对象的模式,组合模式是以树形结构呈现。需求:一个学校有一个校长,下面管理多名老师,每位老师下面又管理多名学生,请按顺序打印名单。创建一个类A,里面包含一个A的集合public class A { private String name; private List<A> list = new ArrayList&l...原创 2019-05-08 10:55:09 · 330 阅读 · 0 评论 -
Java设计模式之简单工厂模式
定义:简单工厂模式就是根据传入的参数不同,工厂类返回不同的实例,不同实例具有共同的父类。我们定义一个水果interface,其中定义一个方法,获取水果名。public interface Fruit{ void getName();}定义苹果类以及香蕉类:public class Apple implements Fruit{ private String name; pub...原创 2019-01-04 17:13:48 · 189 阅读 · 0 评论 -
设计模式六大原则(二)开闭原则
定义:软件开发中的对象(类、模块、函数等等)应该对于扩展是开放的,但对于修改是封闭的。问题由来:参考简单工厂模式,在该模式中,如果想要多添加一种水果,就需要修改工厂类,那么就违背了开闭原则。问题解决:参考工厂方法模式,在该模式中成功解决了简单工厂模式中碰到的开闭原则问题,如果想添加一种水果,只要扩展创建一个新的水果工厂类就可以了,不需要修改原来写好的代码。...原创 2019-01-04 17:48:52 · 199 阅读 · 0 评论 -
Java设计模式之工厂方法模式
由于简单工厂模式违背了开闭原则,为了解决开闭原则的问题,我们引出今天的主角:工厂方法模式。定义:跟简单工厂模式相比,工厂方法模式的区别就是,工厂用接口代替,并且把实例化任务交给工厂接口的实现类。首先我们创Fruit接口:public interface Fruit{ void eat();}创建苹果实体类和香蕉实体类:public class Apple implements ...原创 2019-01-04 18:09:20 · 251 阅读 · 0 评论 -
Java设计模式之抽象工厂模式
定义:用来创建一系列相互关联或相互依赖的产品族。(比方说我要创建一个工厂,里面既可以生产越野车也可以生产跑车。那么如果生产跑车,第一步要生产出跑车的零配件,第二步组装成跑车)...原创 2019-01-04 19:25:41 · 311 阅读 · 0 评论 -
设计模式六大原则
一、单一职责原则(Single Responsibility Principle)定义:二、开闭原则(Open Close Principle)定义:软件开发中的对象(类、模块、函数等等)应该对于扩展是开放的,但对于修改是封闭的三、里氏替换原则(Liskov Substitution Principle)定义:四、依赖倒置原则(Dependence Inversion Pr...原创 2019-01-07 11:53:47 · 209 阅读 · 1 评论 -
设计模式六大原则(一)单一职责原则
设计模式六大原则定义:单一职责原则又称单一功能原则,它规定一个类或模块应该有一个单一的功能,并且一个功能应该完全由一个类或模块封装起来。直接举例子:从网络上请求下来数据,然后储存到本地数据库中,整个需求下来应该是这样的:这里网络请求模块,里面1.根据url返回json数据,2.解析json数据,3.储存到本地数据库。这样做的问题:1.逻辑上耦合度太高,无论是修改网络请求、Jso...原创 2019-01-07 14:12:18 · 418 阅读 · 0 评论 -
设计模式六大原则(三)里氏替换原则
设计模式六大原则原创 2019-01-07 14:16:00 · 200 阅读 · 0 评论 -
设计模式六大原则(四)依赖倒置原则
设计模式六大原则定义:所有使用父类的地方都必须可以使用其子类。原创 2019-01-07 15:07:15 · 240 阅读 · 0 评论 -
设计模式六大原则(五)接口隔离原则
设计模式六大原则定义:简称ISP。客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。举例子:给出指定食材(西红柿、黄瓜、芹菜),冷热菜师傅要根据自己的需求不同,对食材进行预处理。先看不使用接口隔离原则,代码会什么样:public class MadeFood { interface MadeFoodInter{ void mad...原创 2019-01-07 17:02:25 · 3177 阅读 · 0 评论 -
Java23种设计模式
了解设计模式之前先了解:设计模式的六大原则定义:设计模式(Design Pattern)是一套反复使用、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。23种设计模式分类:单例模式单例模式单例模式单例模式单例模式单例模式单例模式单例模式单例模式单例模式单例模式单例模式单例模式单例模式单例...原创 2019-01-07 18:17:22 · 779 阅读 · 0 评论 -
Java设计模式之单例模式
Java23种设计模式原创 2019-01-07 18:26:21 · 229 阅读 · 0 评论 -
Java设计模式之建造者模式
Java23种设计模式原创 2019-01-08 14:26:16 · 375 阅读 · 0 评论 -
Java设计模式之责任链模式
Java23种设计模式开始之前举一个例子:小明为公司普通员工,现在有事情需要请假,公司领导层分为:老板、经理、主管。其中主管可以审批一天以内的假,经理可以审批三天以内的假,超过三天的假必须找老板审批。公司能跟普通员工直接工作交接的只有主管,不存在跨级工作交接的情况。实现该功能需要四个对象:小明、主管、经理、老板。其中主管、经理、老板在这个事件中有审批的动作,小明有提交申请的动作。那么...原创 2019-04-04 17:10:12 · 223 阅读 · 0 评论 -
Java设计模式之观察者模式
Java23种设计模式定义:一个对象发生改变,订阅他的对象也随着跟着改变,不需要在乎互相之间是如何改变的。观察者模式分为:多个观察一个,比方说课堂上老师讲课同时多个人可以听到。一个观察多个,比方说考场上多个考生一个监考老师。第一个例子:多个观察者对一个被观察者:观察者为学生,学生的动作为听课://观察者public interface Observer { ...原创 2019-04-09 17:33:45 · 186 阅读 · 0 评论 -
Java设计模式之备忘录模式
Java23种设计模式定义:用来存储对象内部状态的设计模式。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态外部存储起来,在合适的时候还原状态。需求:设置一个对象A,里面初始化一个int值5,然后对该值进行自增10次,然后恢复自增之前的值。创建保存状态的类Statepublic class State { private int num; public S...原创 2019-05-07 19:05:04 · 168 阅读 · 0 评论