设计模式
一棵树7351
明天,你好
展开
-
Facade pattern(外观模式)
Facade pattern是外观模式,也叫门面模式,是一种结构型设计模式;定义:向外部提供了一个统一的接口,用来访问子系统中的一群接口;适用场景:子系统越来越复杂,增加外观模式提供简单调用接口;构建多层系统结构,利用外观对象作为每层的入口,简化层间调用特点:解耦,减少系统依赖,客户端不用多个子系统直接交流,而是通过外观对象进行交流;简化了调用过程,无需了解子系统;外观模式符合迪米特法则,即最少知道原则,客户端不需要知道众多子系统进行交互,只需要和外观对象交互即可;与外观模式相关的模式对原创 2020-06-25 20:34:11 · 802 阅读 · 0 评论 -
Prototype pattern(原型模式)
原型模式是一种创建型模式,来看下定义和使用场景:定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象(通过克隆方法,不调用构造函数);使用场景:创建对象消耗过多资源,或者创建过程繁琐(数据准备,访问权限等),构造函数复杂,循环体中生产大量对象等;特点:比直接new一个对象性能高,需要实现cloneable接口,涉及浅拷贝,深拷贝;由于该模式比较简单就不写代码示例了;...原创 2020-06-23 19:54:44 · 174 阅读 · 0 评论 -
建造者模式(Builder pattern)
建造者模式也是一种创建型设计模式,主要用来创建复杂对象(对象的属性比较多),将一个复杂对象的构建与它的表示分离,使得同样的构建构成可以创建不同表示;通常在复杂对象内部设计一个静态内部类作为复杂对象的创建者并使用链式编程来实现;使用场景:如果一个对象内部有非常复杂的内部结构,也就是很多属性;想把对象的创建和使用分离;建造者模式和工厂类模式都是创建对象的,但是他们的侧重点不一样,建造者侧重于构建复杂的对象,工厂类模式适用于创建一般对象;...原创 2020-06-08 22:59:48 · 204 阅读 · 0 评论 -
策略模式(Strategy pattern)
策略模式指定了对象在什么情况下应该采取什么样的策略。举个简单的例子:现在有个需求按照恐龙的体重对多个恐龙进行排序,我们可以让恐龙类实现Comparable接口,实现compare方法,在该方法中根据体重进行比较: @Override public int compare(Dragon t) { if (high < ((Dragon)t).getHigh()) { return -1; } else if (high > ((Dragon)t).getHigh()) {原创 2020-05-23 18:58:14 · 262 阅读 · 0 评论 -
单例模式(Singleton pattern)
顾名思义,单例模式就是指一个类在内存中只有一个对象 。常见的单例模式:饿汉式,懒汉式,静态内部类,还有一种不常见的利用枚举来实现;饿汉式:在类加载时就创建好了对象;优点:多线程安全(类加载机制保证),不用加锁效率高;缺点:不管是否用到,该对象都已创建,浪费内存:public class Singleton { private static final Singleton singleton = new Singleton(); private Singleton() {}//构造方法私有化原创 2020-05-21 23:45:38 · 187 阅读 · 0 评论
分享