设计模式(二)、工厂模式-抽象工厂模式

抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。

抽象工厂模式为创建一组对象提供了一种解决方案。与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品。

抽象工厂模式也包含如下四个角色:

● AbstractFactory(抽象工厂):它声明了一组用于创建一族产品的方法,每一个方法对应一种产品。

● ConcreteFactory(具体工厂):它实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中。

● AbstractProduct(抽象产品):它为每种产品声明接口,在抽象产品中声明了产品所具有的业务方法。

● ConcreteProduct(具体产品):它定义具体工厂生产的具体产品对象,实现抽象产品接口中声明的业务方法。

具体的代码示例如下:

定义抽象产品:

public interface ComputeProduct {

    /**
     * 行为
     */
    void behavior();
}

 定义具体类--即具体产品

public class HuaComputeProduct implements ComputeProduct {

    @Override
    public void behavior() {
        System.out.println("我是华为电脑");
    }
}
public class AppleComputeProduct implements ComputeProduct {

    @Override
    public void behavior() {
        System.out.println("我是苹果电脑");
    }
}

第二个抽象产品

public interface PhoneProduct {

    /**
     * 行为
     */
    void behavior();
}

第二个抽象产品对应的具体产品

public class HuaPhoneProduct implements PhoneProduct {

    @Override
    public void behavior() {
        System.out.println("我是华为手机");
    }
}
public class ApplePhoneProduct implements PhoneProduct {

    @Override
    public void behavior() {
        System.out.println("我是苹果手机");
    }
}

抽象工厂:

public interface Factory {

    /**
     * 生产电脑
     * @return
     */
    ComputeProduct productCompute();

    /**
     * 生产手机
     * @return
     */
    PhoneProduct productPhone();
}

具体工厂一:

public class HuaFactory implements Factory {

    @Override
    public ComputeProduct productCompute() {
        return new HuaComputeProduct();
    }

    @Override
    public PhoneProduct productPhone() {
        return new HuaPhoneProduct();
    }

具体工厂二:

public class AppleFactory implements Factory {

    @Override
    public ComputeProduct productCompute() {
        return new AppleComputeProduct();
    }

    @Override
    public PhoneProduct productPhone() {
        return new ApplePhoneProduct();
    }
}

你可能感兴趣的:(设计模式,设计模式,抽象工厂模式)