您好,欢迎访问三七文档
工厂模式简单工厂模式1.目的工厂模式就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式。它定义一个用于创建对象的接口,由子类决定实例化哪一个类。2.简单工厂模式的结构3.一个简单例子java代码1.//产品接口2.publicinterfaceProduct{3.4.publicvoidgetName();5.6.}7.8.//具体产品A9.publicclassProductAimplementsProduct{10.11.publicvoidgetName(){12.System.out.println(IamProductA);13.}14.15.}16.17.//具体产品B18.publicclassProductBimplementsProduct{19.20.publicvoidgetName(){21.System.out.println(IamProductB);22.}23.24.}25.26.//工厂类27.publicclassProductCreator{28.29.publicProductcreateProduct(Stringtype){30.if(A.equals(type)){31.returnnewProductA();32.}33.if(B.equals(type)){34.returnnewProductB();35.}else36.returnnull;37.}38.39.publicstaticvoidmain(String[]args){40.ProductCreatorcreator=newProductCreator();41.creator.createProduct(A).getName();42.creator.createProduct(B).getName();43.}44.}4.小结工厂模式的适用范围•在编码时不能预见需要创建哪一种类的实例。•一个类使用它的子类来创建对象。•开发人员不希望创建了哪个类的实例以及如何创建实例的信息暴露给外部程序。抽象工厂模式1.抽象工厂模式可以说是简单工厂模式的扩展,它们主要的区别在于需要创建对象的复杂程度上。在抽象工厂模式中,抽象产品可能是一个或多个,从而构成一个或多个产品族。在只有一个产品族的情况下,抽象工厂模式实际上退化到工厂方法模式。2.抽象工厂模式的结构3.一个简单例子java代码1.//产品Plant接口2.publicinterfacePlant{3.}4.5.//具体产品PlantA,PlantB6.publicclassPlantAimplementsPlant{7.8.publicPlantA(){9.System.out.println(createPlantA!);10.}11.12.publicvoiddoSomething(){13.System.out.println(PlantAdosomething);14.}15.}16.17.publicclassPlantBimplementsPlant{18.publicPlantB(){19.System.out.println(createPlantB!);20.}21.22.publicvoiddoSomething(){23.System.out.println(PlantBdosomething);24.}25.}26.27.//产品Fruit接口28.publicinterfaceFruit{29.}30.31.//具体产品FruitA,FruitB32.publicclassFruitAimplementsFruit{33.publicFruitA(){34.System.out.println(createFruitA!);35.}36.37.publicvoiddoSomething(){38.System.out.println(FruitAdosomething);39.}40.}41.42.publicclassFruitBimplementsFruit{43.publicFruitB(){44.System.out.println(createFruitB!);45.}46.47.publicvoiddoSomething(){48.System.out.println(FruitBdosomething);49.}50.}51.52.//抽象工厂方法53.publicinterfaceAbstractFactory{54.publicPlantcreatePlant();55.56.publicFruitcreateFruit();57.}58.59.//具体工厂方法60.publicclassFactoryAimplementsAbstractFactory{61.publicPlantcreatePlant(){62.returnnewPlantA();63.}64.65.publicFruitcreateFruit(){66.returnnewFruitA();67.}68.}69.70.publicclassFactoryBimplementsAbstractFactory{71.publicPlantcreatePlant(){72.returnnewPlantB();73.}74.75.publicFruitcreateFruit(){76.returnnewFruitB();77.}78.}4.小结在以下情况下,应当考虑使用抽象工厂模式。首先,一个系统应当不依赖于产品类实例被创立,组成,和表示的细节。这对于所有形态的工厂模式都是重要的。其次,这个系统的产品有多于一个的产品族。第三,同属于同一个产品族的产品是设计成在一起使用的。这一约束必须得在系统的设计中体现出来。最后,不同的产品以一系列的接口的面貌出现,从而使系统不依赖于接口实现的细节。其中第二丶第三个条件是我们选用抽象工厂模式而非其它形态的工厂模式的关键性条件。
本文标题:工厂模式
链接地址:https://www.777doc.com/doc-508391 .html