首页 > 代码库 > 设计模式之工厂模式

设计模式之工厂模式

  工厂模式作为创建型模式中最经典模式,可以说是被运用的最为广泛。就算是刚刚学习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 }

   

设计模式之工厂模式