java单例设计模和工厂模式

2019-04-13 14:34发布

一、单例设计模式:
 1、 确保类在内存中只有一个对象,类实例必须自动创建,且对外提供
 2、 如何确保只有一个对象
  a) 构造方法私有化
  b) 在成员类中创建一个对象并赋给私有静态成员变量,(静态方法只能访问静态成员变量)
   (私有是为了不让外界随意更改此变量)
  c) 在成员类中写一个公共静态方法提供访问私有静态成员变量
   (因为单例设计模式测试类中不能创建对象,只能访问静态方法)
 3、 饿汉式:类一加载就创建对象(Runtime工具类)
  Runtime工具类:每个java引用程序中都有一个Runtime实例,
   使应用程序能够与其运行的环境相连接
  此工具类中有一个方法:
   public Process exec (String command),类似于cmd可以使用dos命令
  懒汉式:用的时候才去创建对象(可能在加载时出现线程安全问题,所以需要加同步方法锁)
二、工厂模式:
 1、 简单工厂模式
  a) 也叫静态工厂方法模式,定义了一个具体的工厂类负责创建一些类的实例
  b) 优点:客户端不需要负责对象的创建,明确了各个类的职责
  c) 缺点:此静态工厂负责创建所有对象,如果有新的对象增加,或者某些对象的创建方式不同
   就需要不断地修改工厂类,不利于后期维护
 2、 工厂方法模式:
  a) 工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由
   继承抽象工厂的具体类实现。
  b) 优点:客户端不需要再负责对象的创建,明确了各个类的职责,如果有新的对象增加,
   只需要加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,
   增强了系统的扩展性。
  c) 缺点:需要额外的编写代码,增加了工作量