首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。