设计模式之二 工厂模式

工厂模式的定义:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法决定一个类的实例化延迟到其子类。

类图如下:

image

通用的代码如下:

//抽象产品类
public abstract class Product {
    // 产品通用的方法.....
    public void method1(){
        
    }
    
    //抽象方法
    public abstract void method2();

}
//--------------------------------------产品类------------------------------------------------
//具体类 1
public class ConcreteProduct1 extends Product {

    
    @Override
    public void method2() {
        // 处理具体产品1的方法

    }

}

//具体产品类2
public class ConcreteProduct2 extends Product {

    @Override
    public void method2() {
        //具体产品2的方法.....

    }

}

//-----------------------------------创建类------------------------------------------
//抽象的创建类
public abstract class Creator {
    //通过反射创建具体的产品类...
    public abstract <T extends Product> T  createProduct(Class<T> c);
}

//具体的抽象类
public class ConcreteCreator extends Creator {


    @Override
    public <T extends Product> T createProduct(Class<T> c) {
        //产品类....
        Product product = null;
        
        if(product == null){
            try {
                product = (Product) Class.forName(c.getName()).newInstance();
            }
            catch (Exception  e) {
                e.printStackTrace();
            }
        }
        
        //返回.....
        return (T)product;
        
    }

}

//---------------------------------------------------------Client 类--------------------------------------------------------------------------
public class Client {

    /** 
     * @Title: main 
     * @Description: 工厂类的Client
     * @param @param args    设定文件 
     * @return void    返回类型 
     * @throws 
     */
    public static void main(String[] args) {
        //工厂创建类
        Creator  creator = new ConcreteCreator();
        //生成具体产品类1
        Product  product = creator.createProduct(ConcreteProduct1.class);
        
        //继续业务处理

    }

}

 

 

简单工厂类

把类图去掉抽象类 creator类,将ConcreteCreator 方法修改为静态即可。

posted @ 2014-10-28 10:14  新闻官  阅读(352)  评论(0编辑  收藏  举报