zgq105 / blog

2 stars 0 forks source link

设计模式之抽象工厂模式 #27

Open zgq105 opened 5 years ago

zgq105 commented 5 years ago

image

1. 什么是抽象工厂模式?有什么作用?

抽象工厂模式是在工厂方法模式基础上进一步对工厂进行抽象,由抽象工厂产生具体工厂,再有具体工厂产生具体产品。在抽象工厂模式中,接口是负责创建一个具体对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供具体对象。

2. 如何实现?

//创建抽象工厂

public interface AbstractFactory {
    Ball creteBall(String type);
}

//创建具体工厂

public class BallFactory implements AbstractFactory {
    @Override
    public Ball creteBall(String type) {
        if (type.equalsIgnoreCase("Basketball")) {
            return new Basketball();
        } else if (type.equalsIgnoreCase("Football")) {
            return new Football();
        }
        return null;
    }
}

//产品抽象

public interface Ball {
    void play();
}

//产品实现

public class Basketball implements Ball {
    @Override
    public void play() {
        Log.d("ball","Basketball");
    }
}

public class Football implements Ball {
    @Override
    public void play() {
        Log.d("ball","Football");
    }
}

//使用抽象工厂模式

AbstractFactory ballFactory = new BallFactory();
Ball ball1 = ballFactory.creteBall("football");
ball1.play();
Ball ball2 = ballFactory.creteBall("basketball");
ball2.play();

3. JDK或Android的应用举例

在JDK中DriverManager#getConnection中使用的就是抽象工厂模式。

4. 小结

抽象工厂模式对工厂进行了抽象,使得每个生成的工厂都能按照工厂模式提供对象。