Design
软件设计相关
只因啊
这个作者很懒,什么都没留下…
展开
-
重拾设计模式-原型模式
简介: 原型模式是一种复制手段,在Java中是根据原有类提供的clone方法实现深、浅克隆。常见使用如Spring对象作用域有Prototype等。 具体实现及测试如下 /** * 酒店实体类,包含各种属性 * @author dedu * */ public class Hotel implements Cloneable{ private Brand brand; priv...原创 2019-05-14 08:58:58 · 104 阅读 · 0 评论 -
重拾设计模式-迭代器模式
简介:迭代器模式常适用于集合操作。它提供一种方法来顺序访问集合对象的各个元素,同时又限制了直接访问集合。Java中List、Set接口都使用了迭代器模式。 代码实现及测试如下: /** * 集合类 * @author dedu * */ public interface Aggregate<T> { void add(T t); T get(int index); I...原创 2019-05-27 22:34:06 · 102 阅读 · 0 评论 -
重拾设计模式-中介者模式
简介:中介者模式用一个中介对象来保存其他对象引用,所有对象之间的调用处理都直接与中介者交互。这样对象之间不需要显示耦合在一起。常见使用场景如MVC中,所有请求及处理都和控制器交互等。 代码实现及测试如下: /** * 中介者接口,定义对象注册方法和对象之间交互方法 * @author dedu * */ public interface Mediator { /**各个子对象注册进中...原创 2019-05-28 21:41:26 · 90 阅读 · 0 评论 -
重拾设计模式-模板方法模式
简介:模板方法模式是多态特性的应用。在父类或抽象类中定义不变的方法(骨架),再定义抽象的变化方法。骨架中可以调用抽象方法。子类继承了父类并重写抽象方法。在主函数中多态实例化来使用。 代码实现及测试如下: public abstract class AbstractClass { public void actionA() { System.out.println("开始操作"); }...原创 2019-06-12 22:31:46 · 111 阅读 · 0 评论 -
重拾设计模式-命令模式
简介:命令模式将请求组成一个对象,进而对请求个性化封装后对客户端进行参数化。同时可以在请求处理过程中穿插其他处理,如日志、事务等。 代码实现及测试如下: /** * 命令接口 * @author dedu */ public interface Command { void execute(String command); } class ConcreteCommand imple...原创 2019-06-07 11:36:01 · 199 阅读 · 0 评论 -
重拾设计模式-状态模式
简介:状态模式是当一个对象的内置状态改变时允许改变其行为,主要解决的是当一个对象状态转换逻辑较复杂时,将这些逻辑转移到其他类中进行分离。 代码实现及测试如下: public interface State { void handle(); } public class ConcreteStateA implements State { @Override public void han...原创 2019-06-13 22:05:06 · 114 阅读 · 0 评论 -
重拾设计模式-桥接模式
简介:桥接模式属于结构型模式,该模式将抽象部分与具体实现部分进行了分离。这样使得各部分可以独立变化。 代码实现及测试: public interface Milk { void addFruit(); } /** * @description: 添加苹果 * @author: xu zhihao * @create: 2019-06-14 18:11 */ public cla...原创 2019-06-15 22:08:26 · 118 阅读 · 0 评论 -
重拾设计模式-观察者模式
简介:观察者模式也叫发布-订阅模式,这种模式非常适用于1-N依赖关系的处理。模式中多个观察者监听同一个主题状态。当主题发生变化时,会通知到所有观察者。具体实现有两种方式:推和拉。 代码实现及测试: /** * 主题,更新后通知所有观察者 * @author dedu * */ public abstract class Subject { List<Observer>...原创 2019-06-16 17:27:51 · 134 阅读 · 0 评论 -
重拾设计模式-策略模式
简介:策略模式是一种定义一系列算法的模式,所有的算法分别是一种处理方法,完成的都是相同的工作,只是方式不一样。使用时,客户端只需选择具体策略实现即可。当有新的策略时,扩展很方便。 代码实现及测试如下: /** * 这种常用的代码逻辑违反了开闭原则,即对修改关闭,对扩展开放 * 后期维护需修改大量代码 * @author dedu */ public class Popular { ...原创 2019-06-11 23:05:44 · 149 阅读 · 0 评论 -
重拾设计模式-责任链模式
简介:责任链模式属于对象的行为模式。这种模式对调用者屏蔽了内部处理细节,使得提交过来的请求一次被链上节点处理,直到成功处理。这种模式下,可以随时的添加或修改处理的请求节点,对处理者的职责进行了更好的划分。 代理实现及测试如下: /** * 责任链父类,结构类似于链表,即类中保留了对下一个链节点的引用。 * @author dedu * */ abstract class Handler...原创 2019-05-26 22:21:55 · 122 阅读 · 0 评论 -
重拾设计模式-构建者模式
简介: 建造者模式也是创建对象的一种模式,这种模式把一个复杂对象的属性构建和对象组装分离执行来实现两者解耦。不同的构建器和不同组装都能创建出不同的对象。常见以Builder结尾的大都是用了构建者模式 实现方式及测试总结见如下 1 /** * 酒店实体类,包含各种属性 * @author dedu * */ public class Hotel { private Brand bran...原创 2019-05-13 14:28:55 · 119 阅读 · 0 评论 -
重拾设计模式-装饰者模式
简介: 装饰者模式属于结构型模式,它的功能是动态地给一个对象添加额外的职责。这种模式比直接生成子类更加灵活。 实现及测试如下 /** * 抽象封装 * @author dedu * */ public interface Component { void operation(); } /** * 实例化的对象,即需要被装饰的本体 * @author dedu * */ pu...原创 2019-05-19 19:54:00 · 150 阅读 · 0 评论 -
重拾设计模式-外观模式
简介: 外观模式也交门面模式,是使用最频繁的一种结构型模式,常体为面向对象的封装特性。这种模式是对外提供一个统一一致的接口来调用子模块,使得子模块更容易使用。 实现及测试如下 /** * 酒店实体类,包含各种属性 * @author dedu * */ public class Hotel { private Brand brand; private String name...原创 2019-05-19 21:52:20 · 127 阅读 · 0 评论 -
重拾设计模式-单例
简介: 单例模式是常见的设计模式,用处是所生成的对象实例为同一个对象,也就是一个全局的唯一对象。常见使用场景如Spring容器默认加载的对象作用域是singleton,某些资源加载工具类或配置读取类可使用单例等。 常见实现方式及测试总结见如下,当然网传有八种实现方式,可自行查看相关博客。 1 饿汉式 /** * @author dedu * * 单例模式:饿汉式 * 优点:线程安全 ...原创 2019-05-10 11:03:16 · 89 阅读 · 0 评论 -
重拾设计模式-适配器模式
简介: 适配器模式属于结构性设计模式。功能是将一个类的接口转换成其他使用者希望的另外一个接口,这样使得原来由于接口兼容问题不能使用的接口也可以使用了。常见于新老系统兼容问题处理。 具体实现及代码测试如下 /** * 被适配的类 * @author dedu * */ public class Adaptee { public void message() { System.ou...原创 2019-05-15 15:08:04 · 101 阅读 · 0 评论 -
重拾设计模式-享元模式
简介: 享元模式通过共享已有部分,各自使用非共享部分,来达到支持大量细粒度的对象。具体概念有两个内部状态和外部状态。常用场景如线程池设计、Java中String类的设计等。 代理实现及测试如下: /** * 定义享元类的抽象,同时提供外部状态操作函数 * @author dedu * */ public interface Flyweight { String getName(); ...原创 2019-05-20 23:00:51 · 101 阅读 · 0 评论 -
重拾设计模式-代理模式
简介: 代理模式属于结构型模式,功能是为其他对象提供一种代理以便于控制对这个对象的访问。常见实现方式有静态代理、动态代理。Spring中的AOP就是基于代理模式实现的。 具体实现及测试如下: 1. 静态代理 /** * 定义功能接口,让代理和被代理对象进行实现 * @author dedu * */ public interface ISubject { void request()...原创 2019-05-16 10:53:15 · 128 阅读 · 0 评论 -
重拾设计模式-工厂模式
简介: 工厂模式常用来实例化生产对象,且所生成的对象为同一模板生成。具体细分有简单工厂模式、工厂方法模式、抽象工厂模式 , 平时框架中以Factory结果的方法基本都采用了工厂模式 常见实现方式及测试总结见如下 1 简单工厂模式 /** * 品牌接口,常见品牌有携程、亚朵、7天等 * @author dedu */ public interface IBrand { /** * 预...原创 2019-05-12 10:39:38 · 111 阅读 · 0 评论 -
重拾设计模式-组合模式
简介: 组合模式也是结构型设计模式,这种模式常用于树形结构,即将对象的层次结构表示成树形。这样使用者就能统一化处理单个对象和组合对象,而不用为区分两者差异做判断。 实现及测试如下 /** * 定义叶子节点和普通节点的共同属性方法 * @author dedu * */ public interface Component { void handle(); } /** * 叶子节点...原创 2019-05-17 08:23:52 · 118 阅读 · 0 评论 -
重拾设计模式-备忘录模式
简介:备忘录模式在不破坏原始类封装的前提下,通过备忘类复制原始类的状态并保存起来。这样后面可根据备忘类进行恢复至之前的某一状态。 代码实现及测试如下: /** * 发起人类:被备忘录的类,内部有自己的属性状态和生成备忘录类方法 * @author dedu * */ public class Originator { private String status; public...原创 2019-06-17 21:30:46 · 96 阅读 · 0 评论