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