抽象工厂模式

        定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

        AbstractFactory:抽象工厂,定义创建一系列产品对象的操作接口。
        ConcreteFactory:具体的工厂,实现抽象工厂定义的方法,具体实现一系列产品对象的创建。
        AbstractProduct:定义一类产品对象的接口。
        ConcreteProduct:具体的产品实现对象,通常在具体工厂里面,会选择具体的产品实现对象,来创建符合,抽象工厂定义的方法返回的产品类型的对象。
        Client:客户端,主要使用抽象工厂来获取一系列所需要的产品对象,然后面向这些产品对象的接口编程,以实现需要的功能。

/**
* 抽象工厂的接口,声明创建抽象产品对象的操作
*/
public interfact AbstractFactory() {

        public AbstractProductA createProductA();

        public AbstractProductB createProductB();
}

/**
* 抽象产品A的接口
*/
public interface AbstractProductA {

        public void test();

}

/**
* 抽象产品B的接口
*/
public interface AbstractProductB {

        public void test();

}

/**
* 产品A的具体实现
*/
public class ProductA1 implements AbstractProductA {

        public void test() {
                System.out.println("product A1");
        }

}

/**
* 产品A的具体实现
*/
public class ProductA2 implements AbstractProductA {

        public void test() {
                System.out.println("product A2");
        }

}

/**
* 产品B的具体实现
*/
public class ProductB1 implements AbstractProductB {

        public void test() {
                System.out.println("product B1");
        }

}

/**
* 产品B的具体实现
*/
public class ProductB2 implements AbstractProductB {

        public void test() {
                System.out.println("product B2");
        }

}

/**
* 具体工厂实现对象,实现创建具体的产品对象的操作
*/
public class ConcreteFactory1 implements AbstractFactory {

        public AbstractProductA createProductA() {

                return new ProductA1();

        }

        public AbstractProductB createProductB() {

                return new ProductB1();

        }
}


/**
* 具体工厂实现对象,实现创建具体的产品对象的操作
*/
public class ConcreteFactory2 implements AbstractFactory {

        public AbstractProductA createProductA() {

                return new ProductA2();

        }

        public AbstractProductB createProductB() {

                return new ProductB2();

        }
}

/**
* 客户端
*/
public class Client {

        public static void main(String[] args) {

                // 创建抽象工厂对象
                AbstractFactory factory = new ConcreteFactory1();

                // 通过抽象工厂对象创建同一系列的产品
                factory.createProductA();
                factory.createProductB();
        }

}

        实际上,抽象工厂旨在维护一个产品簇的关系,通过抽象工厂,将同一个系列的产品关联起来,建立对应关系。


《研磨设计模式》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值