工厂模式

工厂模式是java设计模式中比较简单的一个设计模式,但很多地方都用到了工厂模式,(如解析xml中,jdbc连接数据库等)利用好工厂模式对程序的设计很有用处。

下面就以一个简单例子来说明工厂模式的设计。

工厂是生产产品的地方,就以生成产品为例

1 package factory;
2 //声明类所需继承的共同接口,也可以是抽象类
3 public interface Product {
4 
5 }
Product

定义实现Product的产品类(这里为了简单,在Product类中没有声明方法)

1 package factory;
2 
3 public class ProductA implements Product {
4     public ProductA() {
5         System.out.println("ProductA");
6     }
7 }
ProductA
1 package factory;
2 
3 public class ProductB implements Product {
4     public ProductB() {
5         System.out.println("ProductB");
6     }
7 }
ProductB

定义生成产品的工厂类

 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 }
Factory

客户类

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 }
Client

结果:

这里举得例子比较简单,但是工厂模式的实现可以很复杂。

除了这个静态的工厂模式外,还有抽象工厂模式,不过实现都是差不多,如果要实现的接口或抽象类只有一个,那么抽象工厂模式跟静态工厂模式是一样的,抽象工厂模式是定义了多个抽象的产品类,而静态工厂模式只定义了一个抽象产品类,抽象工厂模式可以创建多个具体产品类,而由于静态工厂模式只有一个抽象产品类,所以只能由工厂类创建一个具体的产品类的实例。


 

posted @ 2014-09-19 12:53  CIACs  阅读(501)  评论(0编辑  收藏  举报