工厂模式:html
介绍:java
工厂模式主要是为建立对象提供过渡接口,以便将建立对象的具体过程(new 关键字和具体的构造器)隐藏起来。用一个工厂方法来替代,对外提供的只是一个工厂方法,达到提升灵活性的目的。 编码
优势:线程
1.隐藏了new关键字和构造器 设计
2.下降了这个对象与别的类之间的耦合度,提升了程序的可扩展性。 缘由:当子类被别的类替代,或者构造器的参数发生变化的时候,只需改动工厂方法内的new便可,改动量降到了最低,直接用new关键字的话,须要改动的地方就不少了 htm
3.把对象的设计和实现分割开来,从而代码扩展性强、灵活性高。 对象
适用范围:
1.在编码时不能预见须要建立哪个种类的实例。
2.一个类使用它的子类来建立对象。
3.开发人员不但愿建立了那个类的实例以及如何建立实例的信息暴露给外部程序。
除了上面提到的例子,工厂模式的实现方式还容许有一些小小的变化,例如:
基类能够是一个抽象类,在这种状况下,工厂类必须返回一个非抽象类。
基类提供了一些缺省方法,只有当这些缺省方法不能知足特殊需求的状况下才能在子类中重写这些方法。
能够直接经过传递给工厂类的参数决定应该返回哪个子类的实例。 blog
结构:用一个方法来代替new关键字和构造器。 接口
单例模式:资源
介绍:
1.声明一个私有的,静态的本类对象,但并不在声明的时候就初始化,所以,它的值为null。
2.私有化构造器
3.对外提供一个全局的,共有的,静态的,惟一的方法,用来得到该实例,但注意的是:必需要手动保持线程同步(synchronized)
4.在该方法里,判断对象是否为null,若是是null的话,表示这个类尚未被实例化,就会初始化这个对象,再返回若是不是null的话,就直接返回。
优势:
整个系统中的全部的类共用一个实例化对象,这样能够有效的节省资源。
适用特色:
它确保一个类在java虚拟机里只有一个实例,使一个类只有一个对象,整个系统共享这个对象。
结构:将构造变成私有的-->作一个静态的生成对象的方法-->造一个静态的存储对象-->return 静态的对象