AbstractFactory

AbstractFactory

Imagemap
 hideAbstractFactory
hideTest
/**
 * 抽象工厂模式
 * @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
AbstractFactory

Imagemap
 hideAbstractFactory
hideTest
/**
 * 抽象工厂模式
 * @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的实现方法");
 }
 
 }
原文地址:https://www.cnblogs.com/flyingsir/p/3998762.html