`

工厂模式

阅读更多

什么是工厂模式?

     工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例 对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩 展性和尽量少的修改量。

 

工厂模式的好处?

1、将对象的创建分离出来,利于维护,降低耦合,提高内聚

2、利用多态,统一创建过程

 

面向接口编程:设计模式的一个重要原则是针对接口编程,不要依赖实现类。工厂模式遵循了这一个原则。
开闭原则(Open-Closed Principle,OCP) “Software entities should be open for extension,but closed for modification”。翻译过来就是:“软件实体应当对扩展开放,对修改关闭”。这句话说得略微有点专业,我们把它讲得更通俗一点,也就是:软件系 统中包含的各种组件,例如模块(Modules)、类(Classes)以及功能(Functions)等等,应该在不修改现有代码的基础上,引入新功 能。开闭原则中“开”,是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的;开闭原则中“闭”,是指对于原有代码的修改是封闭的,即不应该修改原 有的代码。

 

工厂模式的使用?

1、简单工厂

      创建产品接口,具体产品实现产品接口,工厂类根据参数统一创建产品。

      实现了多态,调用者得到的是产品接口,但是调用产品接口的方法,具体的实现是产品的(子类对象指向父类的引用,属于运行时多态)。

      调用者不再关注创建对象的过程,只需要提供参数,降低耦合。工厂类统一管理创建对象的过程,提高内聚。

       今后添加新的产品,只需要改动工厂类,改动产品,也只改动工厂类,利于维护。

 

2、多个工厂方法

      与简单工厂不同的是,使用多个方法创建对象,每种对象对应一种方法。与简单工厂相比,将创建对象的接口分散,降低错误的发生。没有实质性区别。

 

3、静态工厂方法

      不需要创建工厂对象,static方法与对象无关,在类加载的同时已经被写入堆栈。

 

4、抽象工厂

      前三种模式中只有产品实现了抽象,抽象的好处符合开闭原则(对拓展开发,对修改关闭)。抽象工厂的实现依赖于工厂接口,每种工厂需要实现工厂接口,这样添加产品直接实现新的工厂,不需改动原有的工厂。适合需要大量拓展的业务。

 

5、单例模式

      工厂只需要创建一次产品,改产品为静态化实例,与工厂类的生命周期绑定(即加载工厂类后一直存在,与对象生命周期无关)。第一次创建产品返回,第二次调用返回第一次创建的产品,无需再创建对象。

      对多线程争抢产品,可能造成产品实例化多次,可以将产品实例化写在成员变量初始化时。这样在类加载时就已经实例化了产品。或者将产品的创建加锁,这样会避免多次创建产品。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics