GOF23
文章平均质量分 66
思影影思
让积累在潜移默化中不断发生
展开
-
《Java设计模式及实践》之响应式编程与设计模式
属性信息文档名称响应式编程与设计模式版本号V0.0.0.0文档修改日志修改时间修改人修改描述版本号2019-12-28 09:59宋全恒响应式编程与设计模式V0.0.0.01 简介在《Java8设计模式与实践》中第六章和第七章,辛格主要阐述了关于响应式编程与响应式设计模式相关的内容,Reatcive Programming...原创 2019-12-28 19:28:02 · 941 阅读 · 0 评论 -
设计模式之结构性模式
1 简介在前面的博客中,自己分别为GOF23总结了设计模式之创建者模式和行为型模式,借着刚阅读完Java设计模式及实践,对辛格的阐述进行总结,期待可以增进对设计模式的理解。本文主要是对于辛格Java设计模式及实践中第四章结构性模式进行总结。1.1 设计模式七大原则其中依赖倒置原则(Dependence Inversion Principle)的范例如下:母亲类有讲故事的方法TellSt...原创 2019-12-22 15:08:19 · 769 阅读 · 0 评论 -
Java设计模式之行为型模式
1 设计模式简介软件设计模式是一套被反复使用的,多数人知晓的、经过分类编写、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案,它是解决特定问题的一系列套路,是前辈们代码设计经验的总结,具有一定的普遍性,可以反复使用。软件设计模式的目的是为了提高代码的可重用性,代码的可读性和代码的可靠性。1.1 设计模式和原则一个具有良好结构的设计具备如下基本的特征。...原创 2019-12-21 22:53:57 · 580 阅读 · 0 评论 -
Java设计模式之创建者模式
[]Java设计模式之创建型模式1 简介在最近看的一篇文章中,提到了关于新年目标制定的方式的实践,觉得不错,附在上图。尤其是目标一定要符合SMART模式,为了…,通过…,截止…前,实现…这个句式很有力量。在日常编程实践中,对象的构建和初始化占据着十分重要的作用,在23种设计模式中,如下图所示,关于对象创建的设计模式为创建型设计模式,创建型模式主要用来解决对象的创建问题的。当然,这样的...原创 2019-12-14 20:26:38 · 694 阅读 · 2 评论 -
GOF23设计模式之享元模式之理解
享元模式的理解原创 2015-04-08 21:13:50 · 776 阅读 · 0 评论 -
GOF23设计模式之外观模式之实现
package com.bjsxt.cn.facade;public interface 工商局 { public void checkName();}class 海淀区工商局 implements 工商局 { @Override public void checkName() { System.out.println("核实是否有重名!"); }原创 2015-04-07 15:35:17 · 591 阅读 · 0 评论 -
GOF23设计模式之中介者模式的实现
/*** 时间:2015年4月12日09:57:11* 抽象中介类,定义了同事对象到中介者对象的接口* */package com.bjsxt.cn.mediator;public interface Mediator {public void register(String dname, Deparment d);public void command(Stri...原创 2015-04-12 10:56:59 · 833 阅读 · 0 评论 -
GOF23设计模式之外观模式不使用外观模式的实现
package com.bjsxt.cn.nofacade;public interface 工商局 { public void checkName();}class 海淀区工商局 implements 工商局 { @Override public void checkName() { System.out.println("核实是否有重名!"); }原创 2015-04-07 15:29:29 · 602 阅读 · 0 评论 -
GOF23设计模式之装饰模式之实现
/** * 2015年4月6日20:24:58 * 相当于抽象构件 */package com.bjsxt.cn.decorator;public interface ICar { void move();}/** * 相当于具体对象构件 * @author wanna_000 * */class Car implements ICa原创 2015-04-06 21:09:18 · 516 阅读 · 0 评论 -
GOF23设计模式之组合模式的理解
使用组合模式的场景: 把部分和整体的关系用树形结构来表示,从而使客户端可以使用同一的方式处理部分对象和整体对象。 组合模式核心: 抽象构件(Component)角色:定义了叶子和容器构件的共同点。 叶子(Leaf)构件角色:无子节点 容器(Composite)构件角原创 2015-04-06 21:03:37 · 643 阅读 · 0 评论 -
GOF23设计模式之享元模式的实现
享元模式的实现原创 2015-04-08 21:16:27 · 532 阅读 · 0 评论 -
GOF23设计模式之解释器模式和访问器模式的理解
设计模式之解释器模式Interpreter 是一种不常用的设计模式 用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计。 当我们需要开发一种新的语言时,可以考虑使用解释器模式。 尽量不要使用解释器模式,后期维护会有很大麻烦。在项目中可以使用jruby,Groovy,java的js引擎原创 2015-04-14 20:35:23 · 1154 阅读 · 0 评论 -
GOF23设计模式之命令模式(Command)的理解与实现
命令模式Command 命令模式:将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排毒或者记录请求日志,以及支持可撤销的操作。也称之为:动作Action模式,事务Transaction模式 结构: Command抽象命令类 ConcreteCommand具体命令类原创 2015-04-14 20:02:32 · 1116 阅读 · 1 评论 -
GOF23设计模式之策略模式与实现
策略模式strategy 场景: 某个市场人员接到单后的报价策略。报价策略很负责,可以简单做如下分类:普通客户小批量普通客户大批量老客户小批量老客户大批量具体选用那个报价策略,需要根据实际情况来定,这时候,我们采用策略模式即可。 本质:原创 2015-04-15 20:26:40 · 719 阅读 · 0 评论 -
GOF23设计模式之模板方法模式(方法回调)的理解与实现之经典
模板方法模式template method 客户到银行办理业务取号排队办理具体业务/转账/企业/个人/理财业务给银行工作人员评分模板方法模式介绍: 模板方法模式是编程中经常用到的模式。它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算原创 2015-04-15 20:35:01 · 932 阅读 · 3 评论 -
GOF23设计模式之责任链模式(chain of responsibility)之实现
/*** 请假条* 封装请假的信息。*/package com.bjsxt.cn.chainOfResponsibility;public class LeaveRequest {private String empName;private int leaveDays;private String reasons;public LeaveRequest(St...原创 2015-04-09 15:47:19 · 1355 阅读 · 0 评论 -
GOF23设计模式之责任链模式(chain of responsibility)与结构型模式总结经典
责任链模式:Chain of responsibility 将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。场景: 打牌时,轮流出牌。 接力赛跑 大学中,奖学金审批。原创 2015-04-09 15:41:04 · 1359 阅读 · 3 评论 -
GOF23设计模式之观察者模式之理解
观察者模式原创 2015-04-17 21:42:44 · 1743 阅读 · 0 评论 -
GOF23设计模式之观察者模式的理解与实现2(使用java自带的观察者类和接口)
观察者模式的理解与实现,使用JDK自带的Observer类和Observable接口原创 2015-04-17 22:14:34 · 1006 阅读 · 0 评论 -
GOF23设计模式之装饰模式之理解
装饰模式i:(decorator) 职责:动态的微一个对象增加新的功能。 装饰模式是一种用于代替继承的技术,无须通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,避免了类型体系的快速膨胀。 实现细节: Component抽象构件角色:原创 2015-04-06 21:07:16 · 594 阅读 · 0 评论 -
GOF23设计模式之组合模式之实现
/** * 2015年4月6日18:37:49 * 抽象组件,相当于组合模式中的抽象组件 */package com.bjsxt.cn.composite;public interface Component { void operation();}/** * 叶子组件 * @author wanna_000 * */interfac原创 2015-04-06 21:04:20 · 574 阅读 · 0 评论 -
GOF设计模式之适配器模式的理解
适配器模式: 结构型模式 核心作用:是从程序的结构上实现松耦合,从而可以扩大类的整体结构,用来解决更大的问题 分类: 适配器模式,代理模式,桥接模式,装饰模式,组合模式,外观模式,享元模式我们以一个USB---PS/2转接器为例。一般现在的计算机都只有USB接口,而没原创 2015-04-03 21:45:05 · 877 阅读 · 0 评论 -
不使用工厂模式的代码实现
package com.bjsxt.cn.nofactory;public class Audi implements Car{ @Override public void run() { System.out.println("奥迪在跑"); }}package com.bjsxt.cn.nofactory;原创 2015-03-29 11:22:04 · 650 阅读 · 0 评论 -
GOF23设计模式之工厂方法模式的实现
package com.bjsxt.cn.factorymethod;public class Audi implements Car { @Override public void run() { System.out.println("奥迪在跑"); } }package com.bjsxt.cn.factorymethod;原创 2015-03-29 19:22:38 · 665 阅读 · 1 评论 -
GOF23设计模式之抽象工厂模式的实现
package com.bjsxt.cn.abstractFactory;public interface Engine { void run(); void start();}class LuxuryEngine implements Engine { @Override public void run() { System.out.pr原创 2015-03-29 19:25:17 · 583 阅读 · 0 评论 -
GOF23设计模式之简单工厂的实现
package com.bjsxt.cn.simplefactory;public interface Car { void run();}package com.bjsxt.cn.simplefactory;public class Audi implements Car{ @Override public void run() {原创 2015-03-29 19:18:14 · 624 阅读 · 0 评论 -
GOF23之工厂模式理解
工厂模式工厂模式 实现了创建者和调用者的分离 详细分离:简单工厂模式工厂方法模式抽象工厂模式面向对象设计的基本原则 OCP(开闭原则,Open-ClosedPrinciple):一个软件的尸体应对扩展开放,对修改关闭 DIP(依赖倒转原则原创 2015-03-29 11:20:34 · 674 阅读 · 0 评论 -
设计模式GOF23之单例模式理解
设计模式: 将设计者的思维融入大家的学习和工作中创建者模式: 单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式结构型模式: 适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式行为模式: 模板方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘原创 2015-03-26 22:37:21 · 756 阅读 · 0 评论 -
设计模式GOF23之单例模式效率测试与反射和反序列化问题的解决
package com.bjsxt.cn.singleton;import java.io.ObjectStreamException;import java.io.Serializable;/** * 2015年3月26日22:14:22 * 懒汉式单例模式 * 该懒汉式的特点是: * 1, 构造器私有 * 2, 私有静态属性,类型为该类的对象原创 2015-03-26 22:43:11 · 780 阅读 · 0 评论 -
GOF23设计模式之原型模式与创建型模式总结
原型模式prototype 原型模式又称做克隆模式,拷贝模式。实际上是一个内存的操作 原型模式--通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。就是java中的克隆技术,以某个对象为原型,复制出新的对象。显然,新的对象具有原型对象的特点。克隆类似于new,但是又不同原创 2015-04-03 21:40:17 · 663 阅读 · 0 评论 -
GOF23设计模式之适配器模式的实现
/** * 被适配的类:相当于本例子中的具有PS/2的键盘。可以满足客户的需求,但是计算机无法使用这个接口 * 时间:2015年4月3日20:35:25 * 也就是说,我们在这个类中定义的方法已经可以充分的完成客户所需要的目标, 因此也就没有必要重新再写一遍了。 * 因此我们需要通过某种途径,来使用这个方法 */package com.bjsxt.cn.adap原创 2015-04-03 21:46:01 · 562 阅读 · 0 评论 -
GOF23设计模式之桥接模式的实现
/** * 在这个源代码程序的编写中,我们很明显的感觉到扩展的吃力。因为类的数量会急剧膨胀。 * 如果要增加一个品牌,或者一种类型的电脑,都会有大量的工作要完成。 * 违反单一职责原则: * 一个类,联想笔记本,有两个引起类型变化的东西。 * 这个类型中,有两个变化的维度。电脑类型和电脑品牌。 * */package com.bjsxt.cn.br原创 2015-04-06 10:28:15 · 522 阅读 · 0 评论 -
GOF23设计模式之桥接模式理解
桥接莫斯(bridge) 商场系统中常见的商品分类,以电脑为类,如何良好的处理商品分类销售如果我们在java中使用普通的单继承实现这个图像中的结构会出现下列的问题 扩展性问题(类个数膨胀问题) 如果要增加一个新的电脑类型:智能手机,则要增加各个品牌下面的额类 如果要增加一个新的品牌,原创 2015-04-06 10:25:29 · 774 阅读 · 0 评论 -
GOF23设计模式之迭代器模式理解与实现
迭代器模式 场景: 提供一种可以遍历聚合对象的方式。又称为游标cursor模式 聚合对象:存储数据 迭代器模式:遍历数据 聚集抽象类 AggregateIterator迭代抽象类,用于定义得到开始对象,得到下一个对象,判断是否原创 2015-04-11 22:24:05 · 822 阅读 · 0 评论 -
GOF23设计模式之动态代理模式之理解
动态代理(dynamic Proxy) 动态代理(动态生成代理类)JDK自带的动态代理Javaassist字节码操作库实现CGLIBASM(底层使用指令,可维护性较差)相当于静态代理的优点: 抽象角色中(接口)声明的所有方法都被转移到调用处理器一个集中的方法中处理原创 2015-04-04 21:00:17 · 700 阅读 · 0 评论 -
GOF23设计模式之动态代理模式实现之经典
/** * 抽象就角色,定义代理角色和真实角色的公共对外方法 * 时间:2015年4月4日18:45:00 * 在这个例子中,抽象角色起着规范代理角色和真实角色的作用。 * 其中具有方法,面谈,签合同收预付款,预订机票,唱歌,收尾款 */package com.bjsxt.cn.proxy.dynamicProxy;public interface Star原创 2015-04-04 21:02:09 · 745 阅读 · 0 评论 -
GOF23设计模式之静态代理模式实现之经典
/** * 抽象就角色,定义代理角色和真实角色的公共对外方法 * 时间:2015年4月4日18:45:00 * 在这个例子中,抽象角色起着规范代理角色和真实角色的作用。 * 其中具有方法,面谈,签合同收预付款,预订机票,唱歌,收尾款 */package com.bjsxt.cn.proxy.staticProxy;public interface Star原创 2015-04-04 20:57:56 · 858 阅读 · 0 评论 -
GOF23代理模式之静态代理模式理解之经典
设计模式之代理模式之静态代理模式 代理模式(Proxypattern) 核心作用: 通过代理,控制对对象的访问。 可以通过详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。(即AOP的微观实现)原创 2015-04-04 20:56:47 · 790 阅读 · 0 评论 -
GOF23设计模式之原型模式之实现
/** * Sheep类,测试原型模式之浅拷贝 * 时间:2015年4月1日09:44:29 */package com.bjsxt.cn.prototype;import java.io.Serializable;import java.util.Date;public class Sheep implements Cloneable, Seria原创 2015-04-03 21:42:04 · 590 阅读 · 0 评论 -
设计模式GOF23之单例模式实现
package com.bjsxt.cn.singleton;/** * 饿汉式创建单例模型 * 饿汉式单例模型的特点: * 1, 私有的该类对象静态属性 * 2, 私有的构造器 * 3, 公共的静态方法访问静态属性(因此需要时静态的环境) * @author wanna * */public class SingletonDemo1 { //饿汉原创 2015-03-26 22:41:10 · 666 阅读 · 0 评论