设计模式
残念怪蜀黍
跨界码农
展开
-
设计模式之观察者模式的Java实现
什么是观察者模式 摘自百度的解释 观察者(Observer)模式又名发布-订阅(Publish/Subscribe)模式。GOF给观察者模式如下定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 观察者模式的优缺点 观察者模式的优点: 1.观察者模式实现了观察者和目标之间的耦合 2.观察者模式实现了动态联...原创 2017-04-28 16:41:11 · 332 阅读 · 0 评论 -
Java实现建造者模式
13.4 建造者模式 我想构建一个小人,作为人,我们有两只手,两个脚,一个脑袋,这个是固定的。但是人的高矮胖瘦不一样。 建造者模式可将一个产品的内部表象和产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。 使用该模式,用户只需指定需要建造的类型就可以得到它们,具体建造过程和细节就不需知道了。 先定义一个抽象的造人的类(有头、身体、四肢),把这个建造...原创 2018-04-11 13:35:41 · 1090 阅读 · 1 评论 -
Java实现模板方法模式
10.3 提炼代码 老师出一份试卷,打印多份,学生填写答案即可。 把试题和答案分享,抽象出分类,让子类继承,公共试题代码写在父类类中,即可。 但是这样的话,学生子类中还是有重复的代码,比如base.testQuestion1()等等。 所有重复的代码都应该要上升到父类去,而不是让每个子类都去重复。 场景: 当我们完成某一细节层次一直的一个过程或一系列步骤,但个别步骤...原创 2018-04-10 17:03:01 · 2676 阅读 · 0 评论 -
Java实现桥接模式
22.2 紧耦合程序演化 两个手机品牌,都有游戏,两个手机是不同的操作系统。怎么写? 该有一个父类手机品牌游戏,让N和M品牌手机游戏都继承它。 如果N和M品牌手机又都增加了通讯录功能呢? 基于这个模型,那如果新增加一个手机品牌,并且每个手机品牌增加各种功能,例如:游戏、通讯录、MP3等。 那样就会变得非常麻烦。 继承的问题 无法在运行时改变从父类继承的实现,子类和父类...原创 2018-04-16 09:47:57 · 4161 阅读 · 0 评论 -
Java实现简单工厂模式
1.3 代码规范 如果你想做一个计算器的话,是怎样操作的 C#实现的。和Java语法差不多 1.8 业务封装 采用面向对象思想将业务计算逻辑和界面逻辑分开。 Operation类 这个只是运用了面向对象的封装。下面是实现继承和多态。 继承: public class Operation { private double numberA; priva...原创 2018-04-10 14:42:42 · 2950 阅读 · 1 评论 -
Java实现工厂方法模式
8.3 工厂方法模式实现 将之前简单工厂实现的计算器以工厂方法模式去实现。 结构图 先构建一个工厂接口 public interface IFactory { Operation createOperation(); } 加减乘除各建一个类去实现这个接口 //加法类工厂 class AddFactory implements IFactory { publ...原创 2018-04-10 14:35:59 · 2099 阅读 · 0 评论 -
Java实现代理模式
7.2 没有代理的代码(静态代理) 追求者中间没有代理人,代理人可以代替追求者给女孩送花等。 现在没有代理人的代码 //追求者类 class Pursuit { SchoolGirl mm; public Pursuit(SchoolGirl mm){ this.mm = mm; } public void giveDolls(){...原创 2018-04-10 13:19:55 · 407 阅读 · 0 评论 -
适配器模式
1. 适配器的原理 火鸡冒充鸭子 一个公司做鸭子产品,一个公司做火鸡产品。 如果火鸡公司想要做鸭子产品,通过火鸡适配器,让火鸡在外界的形象看起来就是鸭子,但内部所调用的东西都依然是火鸡的。 代码实现 对象适配器 构造方法内传入的是需要被适配的那个对象 /** * 火鸡冒充鸭子 * Created by Administrator on 2017/6/...原创 2017-07-02 21:53:05 · 162 阅读 · 0 评论 -
设计模式之责任链模式
什么是责任链模式 在生活中,责任链模式的实现比较多,比如说“击鼓传花”这个游戏,大家包围成一个圈,接连的传递这个花球。另外有个人在圈外负责击鼓时间到了花球就到了某个人的手里,这个人收到花球(请求),进而给大家唱歌或者别的什么的(响应) 再比如说去买房,首先来了一个普通购房者,和销售说,我全款买一套房,给我打个九折吧。销售知道九折在自己所在的权限范围内,便给买房子的人打了一个九折的优惠。然后...原创 2017-05-03 18:36:21 · 195 阅读 · 0 评论 -
Java实现抽象工厂模式
15.3 用工厂方法模式的数据访问程序 现在想用不同的数据库连接,获得数据,但是每个数据库连接的方法可能有些不同。 想用工厂方法兼容不同的数据库。 现在想在User表获得记录和添加记录。SqlServer和Access都有user表。 User接口,用户客户端访问,解除和具体数据库的耦合 public interface IUser { void insert...原创 2018-04-11 19:12:25 · 3055 阅读 · 0 评论