首页 > 代码库 > AbstractFactory

AbstractFactory

 

 

 

 

 

AbstractFactoryImagemap hideAbstractFactoryhideTest/** * 抽象工厂模式 * @author  * */ public class Test { public static void main(String[] args) { // 定义出两个工厂 AbstractCreator creator1 = new Creator1(); AbstractCreator creator2 = new Creator2();  // 产生A1对象 AbstractProductA a1 = creator1.createProductA(); // 产生2对象 AbstractProductA a2 = creator2.createProductA();  // 产生B1对象 AbstractProductB b1 = creator1.createProductB(); // 产生B2对象 AbstractProductB b2 = creator2.createProductB(); } }hideAbstractCreator/** * 抽象工厂 *  * @author  *  */ public abstract class AbstractCreator { /** * 创建A产品族 *  * @return */ public abstract AbstractProductA createProductA();  /** * 创建B产品族 *  * @return */ public abstract AbstractProductB createProductB(); }hideCreator1/** * 产品等级1的实现类 *  * @author lyq *  */ public class Creator1 extends AbstractCreator {  /** * 只产生产品等级为1的A产品 */ public AbstractProductA createProductA() { return new ProductA1(); }  /** * 只产生产品等级为1的B产品 */ public AbstractProductB createProductB() { return new ProductB1(); }  }hideAbstractProductA/** * 抽象产品类 * */ public abstract class AbstractProductA { /** * 每个产品共有的方法 */ public void shareMethod() {  }  /** * 每个产品相同的方法,不同的实现 */ public abstract void doSomething(); }leafProductA1/** * 产品A1的实现类 *  */ public class ProductA1 extends AbstractProductA {  @Override public void doSomething() { System.out.println("产品A1的实现方法");  } }hideAbstractProductB/** * 抽象产品类 *  */ public abstract class AbstractProductB { /** * 每个产品共有的方法 */ public void shareMethod() {  }  /** * 每个产品相同的方法,不同的实现 */ public abstract void doSomething(); }leafProductB1/** * 产品B1的实现类 * @author lyq * */ public class ProductB1 extends AbstractProductB{  @Override public void doSomething() { System.out.println("产品B1的实现方法"); }  }hideCreator2/** * 产品等级2的实现类 *  * @author  *  */ public class Creator2 extends AbstractCreator {  /** * 只产生产品等级为2的A产品 */ public AbstractProductA createProductA() { return new ProductA2(); }  /** * 只产生产品等级为2的B产品 */ public AbstractProductB createProductB() { return new ProductB2(); }  }hideAbstractProductA/** * 抽象产品类 * */ public abstract class AbstractProductA { /** * 每个产品共有的方法 */ public void shareMethod() {  }  /** * 每个产品相同的方法,不同的实现 */ public abstract void doSomething(); }leafProductA2/** * 产品A2的实现类 * @author  * */ public class ProductA2 extends AbstractProductA {  @Override public void doSomething() { System.out.println("产品A2的实现方法"); }  }hideAbstractProductB/** * 抽象产品类 *  */ public abstract class AbstractProductB { /** * 每个产品共有的方法 */ public void shareMethod() {  }  /** * 每个产品相同的方法,不同的实现 */ public abstract void doSomething(); }leafProductB2/** * 产品B2的实现类 * @author  * */ public class ProductB2 extends AbstractProductB {  @Override public void doSomething() { System.out.println("产品B2的实现方法"); }  }

 

AbstractFactory    Test        AbstractCreator            Creator1                AbstractProductA                    ProductA1                AbstractProductB                    ProductB1            Creator2                AbstractProductA                    ProductA2                AbstractProductB                    ProductB2

 

 

AbstractFactoryImagemap hideAbstractFactoryhideTest/** * 抽象工厂模式 * @author  * */ public class Test { public static void main(String[] args) { // 定义出两个工厂 AbstractCreator creator1 = new Creator1(); AbstractCreator creator2 = new Creator2();  // 产生A1对象 AbstractProductA a1 = creator1.createProductA(); // 产生2对象 AbstractProductA a2 = creator2.createProductA();  // 产生B1对象 AbstractProductB b1 = creator1.createProductB(); // 产生B2对象 AbstractProductB b2 = creator2.createProductB(); } }hideAbstractCreator/** * 抽象工厂 *  * @author  *  */ public abstract class AbstractCreator { /** * 创建A产品族 *  * @return */ public abstract AbstractProductA createProductA();  /** * 创建B产品族 *  * @return */ public abstract AbstractProductB createProductB(); }hideCreator1/** * 产品等级1的实现类 *  * @author lyq *  */ public class Creator1 extends AbstractCreator {  /** * 只产生产品等级为1的A产品 */ public AbstractProductA createProductA() { return new ProductA1(); }  /** * 只产生产品等级为1的B产品 */ public AbstractProductB createProductB() { return new ProductB1(); }  }hideAbstractProductA/** * 抽象产品类 * */ public abstract class AbstractProductA { /** * 每个产品共有的方法 */ public void shareMethod() {  }  /** * 每个产品相同的方法,不同的实现 */ public abstract void doSomething(); }leafProductA1/** * 产品A1的实现类 *  */ public class ProductA1 extends AbstractProductA {  @Override public void doSomething() { System.out.println("产品A1的实现方法");  } }hideAbstractProductB/** * 抽象产品类 *  */ public abstract class AbstractProductB { /** * 每个产品共有的方法 */ public void shareMethod() {  }  /** * 每个产品相同的方法,不同的实现 */ public abstract void doSomething(); }leafProductB1/** * 产品B1的实现类 * @author lyq * */ public class ProductB1 extends AbstractProductB{  @Override public void doSomething() { System.out.println("产品B1的实现方法"); }  }hideCreator2/** * 产品等级2的实现类 *  * @author  *  */ public class Creator2 extends AbstractCreator {  /** * 只产生产品等级为2的A产品 */ public AbstractProductA createProductA() { return new ProductA2(); }  /** * 只产生产品等级为2的B产品 */ public AbstractProductB createProductB() { return new ProductB2(); }  }hideAbstractProductA/** * 抽象产品类 * */ public abstract class AbstractProductA { /** * 每个产品共有的方法 */ public void shareMethod() {  }  /** * 每个产品相同的方法,不同的实现 */ public abstract void doSomething(); }leafProductA2/** * 产品A2的实现类 * @author  * */ public class ProductA2 extends AbstractProductA {  @Override public void doSomething() { System.out.println("产品A2的实现方法"); }  }hideAbstractProductB/** * 抽象产品类 *  */ public abstract class AbstractProductB { /** * 每个产品共有的方法 */ public void shareMethod() {  }  /** * 每个产品相同的方法,不同的实现 */ public abstract void doSomething(); }leafProductB2/** * 产品B2的实现类 * @author  * */ public class ProductB2 extends AbstractProductB {  @Override public void doSomething() { System.out.println("产品B2的实现方法"); }  }

 

AbstractFactory