设计模式之工厂模式

  工厂模式作为创建型模式中最经典模式,可以说是被运用的最为广泛。就算是刚刚学习java的小白,也会不经意间得在自己的程序中用到这一模式的一部分,无意识地就成就着工厂模式。

  那么工厂模式是怎样的呢?怎么的代码设计才能称作完整的工厂模式?

  就个人理解,工厂模式由其功能定义:为创建对象提供一个过渡的接口,使得创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

  工厂模式讲究创建对象的时候不直接使用new 方法,因为new方法有时候会暴露创建对象的过程(new方法中常常带有构造参数)。

  工厂模式的类图可以由下图表示:

  由类图可以看出,客户(client)想要获取到产品对象(product),是通过创建类(creator)来创建,而非直接创建。且这一过程还使用了接口类来提高同一类产品的扩展性。当有新的产品产生时,只要按照抽象产品角色、抽象工厂角色提供的合同来生成就可以直接被客户适用了,而不必去修改任何已有的代码。工厂模式也是符合开闭原则的。

  下面来看一个完整的例子加深对工厂模式的理解。

 

 1 //抽象工厂角色
 2 public interface Driver{
 3   public Car driverCar();
 4 }
 5 //具体工厂角色
 6 public class BenzDriver implents Driver{
 7   public Car driverCar(){
 8     return new Benz();
 9   }
10 }
11 //抽象产品角色
12 public interface Car{
13   public void drive();
14 }
15 //具体产品角色
16 public class Benz implents Car{
17   public void drive(){
18     doSomething();
19   }
20 }

   

posted @ 2014-11-19 09:09  Simba.Chen  阅读(180)  评论(0编辑  收藏  举报