Java设计模式之《抽象工厂模式》详解 实现抽象工厂及应用场景

抽象工厂模式(Abstract Factory)

       抽象出来一个基础接口定义了产品功能(对应抽象产品角色),每个实现此接口的子类就是具体产品(对应具体产品角色),然后定义一个工厂接口(对应抽象工厂角色),实现了工厂接口的子类就是具体工厂(对应具体工厂角色),这时候,接口编程的优点就体现了,我们可以随时新增具体产品类(只需要实现产品接口),只需要同时新增一个工厂类,客户端就可以轻松调用生成新产品的代码。

  抽象工厂模式的灵活性就体现在这里,无需改动原有的代码,毕竟对于客户端来说,静态工厂模式在不改动StaticFactory类的代码时无法新增产品,如果采用了抽象工厂模式,就可以轻松的新增拓展类。

抽象工厂模式的用意为:给客户端提供一个统一接口,可以创建多个复杂产品族中的产品对象

抽象工厂角色: 这是抽象工厂模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。
具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。它由具体的类来实现。
抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般由抽象类或者接口来实现。
具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现

Java设计模式之《抽象工厂模式》详解 实现抽象工厂及应用场景_第1张图片

interface food { }

class A implements food{}
class B implements food{}

interface AbstractFactory { Food produceFood();}

class FactoryA implements AbstractFactory {
    @Override
    public Food produceFood() {
        return new A();
    }
}

class FactoryB implements AbstractFactory {
    @Override
    public Food produceFood() {
        return new B();
    }
}

 客户端调用

public class Client{
    public Food getFood(String name){
        Food x= new FactoryA().produceFood();
        return x;
    }
}

 

你可能感兴趣的:(Java基础)