设计模式
Qgwperfect
这个作者很懒,什么都没留下…
展开
-
单例-枚举方式
装备了枚举的饿汉模式能抵御反射与序列化的进攻。public class EnumSingleton { private EnumSingleton() {} public static EnumSingleton getInstance() { return EnumSingletonHolder.HOLDER.instance; } p...原创 2020-03-02 15:11:47 · 218 阅读 · 0 评论 -
原型模式
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数...转载 2019-04-15 13:43:21 · 124 阅读 · 0 评论 -
代理模式
代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。介绍意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操...转载 2019-04-17 18:05:16 · 111 阅读 · 0 评论 -
装饰器模式
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。我们通过下面的实例来演示装饰器模式的用法。其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类。介绍意图:动态地给一个...转载 2019-04-17 16:31:11 · 96 阅读 · 0 评论 -
外观模式
外观模式外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。介绍意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更...转载 2019-04-17 15:30:28 · 103 阅读 · 0 评论 -
适配器模式
适配器模式适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。我们通过下面的实例来演示适配器模式的使...转载 2019-04-15 17:37:34 · 116 阅读 · 0 评论 -
java策略模式
策略接口类public interface CalculateStrategy { public double calculate(double salary, double bonus);}策略1实现类public class CalculateStrategyFirst implements CalculateStrategy { private static f...原创 2019-03-22 14:54:46 · 92 阅读 · 0 评论 -
java模板方法模式
代码示例:public class TemplateMethodMode { public void print(String message) { System.out.println("******************************"); wrapPrint(message); System.out.println("*******************...原创 2019-03-22 11:49:26 · 89 阅读 · 0 评论 -
建造者模式
建造者模式建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。介绍意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:主要解决在软件系统中,有时候面...转载 2019-03-25 17:06:57 · 101 阅读 · 0 评论 -
观察者模式
观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。介绍意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用...转载 2019-03-25 14:06:14 · 97 阅读 · 0 评论 -
抽象工厂模式
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。类型:创建类模式类图:抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽...转载 2019-03-18 11:49:17 · 107 阅读 · 0 评论 -
工厂方法模式
1.模式描述提供一个用于创建对象的接口(工厂接口),让其实现类(工厂实现类)决定实例化哪一个类(产品类),并且由该实现类创建对应类的实例。2.模式作用可以一定程度上解耦,消费者和产品实现类隔离开,只依赖产品接口(抽象产品),产品实现类如何改动与消费者完全无关。可以一定程度增加扩展性,若增加一个产品实现,只需要实现产品接口,修改工厂创建产品的方法,消费者可以无感知(若消费者不关心具体...转载 2019-03-18 11:35:27 · 96 阅读 · 0 评论 -
简单工厂模式
一个栗子:我喜欢吃面条,抽象一个面条基类,(接口也可以),这是产品的抽象类。public abstract class INoodles { /** * 描述每种面条啥样的 */ public abstract void desc();}先来一份兰州拉面(具体的产品类):public class LzNoodles extends INoo...转载 2019-03-18 11:00:51 · 103 阅读 · 0 评论 -
三种Singleton高效优雅的实现
第一种:public class Singleton1 { private static volatile Singleton1 instance; private Singleton1() { } public static Singleton1 getInstance() { if (null == instance) { synchronized (S...原创 2019-03-24 20:21:54 · 164 阅读 · 0 评论