您的位置:首页 > 编程语言 > Java开发

Java的工厂模式(Factory)之二

2008-03-01 17:03 211 查看
 

前文的工厂模式的产品创建过程只有一个工厂,如果实际过程中需要多个工厂, 则需要将工厂进行抽象,这就产生了工厂方法模式:

实例:

1 Product抽象,使用接口实现


package com.javapatterns.factorymethod;




public interface Product




...{




}

 

2 具体产品

   具体产品之一


package com.javapatterns.factorymethod;




public class ConcreteProduct1 implements Product




...{


    public ConcreteProduct1()




    ...{


        System.out.println("CocnreteProduct1 is being created.");


    }




}



  具体产品之二


package com.javapatterns.factorymethod;




public class ConcreteProduct2 implements Product




...{


    


    public ConcreteProduct2()




    ...{


        System.out.println("CocnreteProduct2 is being created.");


    }


   




}



3 生产类

 


package com.javapatterns.factorymethod;




public interface Product




...{




}



 4 具体生产类

    之一

 


package com.javapatterns.factorymethod;




public class ConcreteCreator1 implements Creator




...{


    public Product factory()




    ...{


        return new ConcreteProduct1();


    }


    




}



 

    之二

 


package com.javapatterns.factorymethod;




public class ConcreteCreator2 implements Creator




...{


    public Product factory()




    ...{


        return new ConcreteProduct2();


    }


    




}

 

5 工厂方法的使用

 


package com.javapatterns.factorymethod;




public class Client




...{


    private static Creator creator1, creator2;


    private static Product prod1, prod2;




    public static void main(String[] args)




    ...{


    creator1 = new ConcreteCreator1();


        prod1 = creator1.factory();




    creator2 = new ConcreteCreator2();


        prod2 = creator2.factory();




        


        


    }


}



 

运行结果:

init:
deps-jar:
Compiling 1 source file to D:/test/desPatten/build/classes
compile-single:
run-single:
CocnreteProduct1 is being created.
CocnreteProduct2 is being created.
生成成功(总时间:2 秒)

该方法相对前面的简单方法,在面对新增产品时,只要新增一个产品类和具体的工厂类即可,较好的支持了开闭原则。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息