![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
GENTLE-YOUNG
跳出舒适圈
展开
-
策略模式
概述结构与简单工厂模式相似,只是Factory换成了Context,简单工厂模式注重的是对象的创建,策略模式注重的是行为的变化。Context类持有一个父类引用,传入不同的行为实例,则执行不同的行为。在简单工厂模式中,当需要扩展或变更时,都需要改动工厂类,代码需要重新编译部署。举例不同查找算法涉及的类:Context类、查找父类、二分查找类、顺序查找类查找父类/接口...原创 2019-04-10 10:39:20 · 69 阅读 · 0 评论 -
建造者模式
概述将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。将构建一个复杂对象所需的必要过程规定到一个Builder接口之中,由不同的实现类实现即“同样构建过程创建不同表示”。最后,由一个指挥者Director指挥建造过程。示例代码class Product{ private List<String> parts = new Arra...原创 2019-04-13 15:26:10 · 62 阅读 · 0 评论 -
外观模式
概述为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。比如在维护一个遗留的大型系统时,这个系统已经非常难以维护和扩展了,但包含了非常重要的功能,新的需求开发必须依赖这些功能。这时,就可以为新系统开发一个Facade类,让新系统与Facade交互,Facade与遗留代码交互所有复杂的工作,开发人员分两个小组分别进行。示例代码...原创 2019-04-13 14:59:45 · 83 阅读 · 0 评论 -
模板方法模式
概述定义一个操作中算法的骨架,而将一些步骤延迟到子类。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式其实就是提供了一个很好的代码复用平台。当子类实现中出现不变行为和可变行为的混合时,不变行为则会在子类中大量重复,这时,就可以将不变行为提取到父类。UML图abstract class AbstractClass{ abstrac...原创 2019-04-13 10:59:37 · 75 阅读 · 0 评论 -
简单工厂模式
概述用户输入特定指令,由一个工厂类根据指令生成不同类的实例(提供一个静态方法),这些类可继承一个父类。这样,返回的是父类引用,生成的是特定的实现类,实现了细节的隐藏。举例简易计算器涉及的类:工厂类、运算父类、运算加类、运算减类运算父类class Operation{ private double number1; private double numb...原创 2019-04-09 18:14:12 · 67 阅读 · 0 评论 -
原型模式
概述通过拷贝原型创建新的对象。在Java中有一个Cloneable接口,只有一个clone方法,实现它即可。举例生成简历clone方法会抛出CloneNotSupportedException,为了代码简单省略。class Resume implements Cloneable{ private String name; private int s...原创 2019-04-12 12:35:58 · 94 阅读 · 0 评论 -
工厂方法模式
概述定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。举例同样是计算器的例子,我们来看看工厂方法模式的实现。interface IFactory{ Operation createOperation();}class FactoryAdd implements IFactory{ public Operati...原创 2019-04-12 11:19:47 · 118 阅读 · 0 评论 -
动态代理
静态代理首先看看一般的代理模式即静态代理。我们直接来看代码。public interface HelloService{ void sayHello();}/** * 被代理类 */public class HelloServiceImpl implements HelloService{ public void sayHello(){ System....原创 2019-04-11 15:29:07 · 189 阅读 · 0 评论 -
代理模式
概述为对象提供一种代理以控制对这个对象的访问。UML图这种代理属于静态代理,动态代理详见链接原创 2019-04-11 15:28:00 · 47 阅读 · 0 评论 -
装饰模式
概述动态地为原有类添加新的功能。而不是以继承的方式来扩展,避免不断增加子类;不是以增加新字段、新方法的方式扩展新功能,将核心功能与装饰功能区分。举例给人穿衣服涉及的类:Person类interface Person{ public void show();}Male类class Male implements Person{ @Ov...原创 2019-04-11 14:20:57 · 245 阅读 · 0 评论 -
观察者模式
概述定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。示例代码//抽象通知者abstract class Subject{ private List<Observer> observers = new ArrayList<>(); publi...原创 2019-04-14 14:10:26 · 82 阅读 · 0 评论