工厂模式
工厂模式是java设计模式中比较简单的一个设计模式,但很多地方都用到了工厂模式,(如解析xml中,jdbc连接数据库等)利用好工厂模式对程序的设计很有用处。
下面就以一个简单例子来说明工厂模式的设计。
工厂是生产产品的地方,就以生成产品为例
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package factory; 2 //声明类所需继承的共同接口,也可以是抽象类 3 public interface Product { 4 5 }
定义实现Product的产品类(这里为了简单,在Product类中没有声明方法)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package factory; 2 3 public class ProductA implements Product { 4 public ProductA() { 5 System.out.println("ProductA"); 6 } 7 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package factory; 2 3 public class ProductB implements Product { 4 public ProductB() { 5 System.out.println("ProductB"); 6 } 7 }
定义生成产品的工厂类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package factory; 2 3 public class Factory { 4 //可以在工厂类中添加任何你所需要的逻辑 5 public static Product create(String str) 6 { 7 //生成ProductA 8 if(str.equalsIgnoreCase("ProductA")) 9 { 10 return new ProductA(); 11 } 12 else 13 //生成ProductB 14 if(str.equalsIgnoreCase("ProductB")) 15 { 16 return new ProductB(); 17 } 18 return null; 19 } 20 21 }
客户类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package factory; 2 3 public class Client { 4 public static void main(String[] args) { 5 //调用Factory的静态方法生成所要的类 6 Factory.create("productA"); 7 Factory.create("ProductB"); 8 } 9 }
结果:
这里举得例子比较简单,但是工厂模式的实现可以很复杂。
除了这个静态的工厂模式外,还有抽象工厂模式,不过实现都是差不多,如果要实现的接口或抽象类只有一个,那么抽象工厂模式跟静态工厂模式是一样的,抽象工厂模式是定义了多个抽象的产品类,而静态工厂模式只定义了一个抽象产品类,抽象工厂模式可以创建多个具体产品类,而由于静态工厂模式只有一个抽象产品类,所以只能由工厂类创建一个具体的产品类的实例。
由于水平有限,文章中难免有错误的地方,欢迎指出错误或不足之处,共同进步。欢迎转载,转载时请注明出处,谢谢。
——by CIACs