今天我们来了解一下工厂模式吧~~
以下是我摘自维基百科:
工厂方法模式(英语:Factory method pattern)是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不
指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂
方法让类的实例化推迟到子类中进行。
什么意思呢?其实质是利用了对接口进行编程的思想,让每个子类实现抽象类创建的接口,也就是接口的实现延迟到子类。(接口是个广泛的概念,可以是类,也可以是方法/函数)。让我们仔细看一张类图,了解一下工厂模式解决了什么问题?
-
首先,Factory只负责创建对象的接口,而由它的子类具体的实现父类(抽象类)接口。
-
Factory子类的接口怎么实现对对象的创建呢?是直接依靠具体类?还是 。 。 。 ? 当然是依靠Object(抽象类)的啦。这样Factory子类的创建的接口就可以不知道具体的对象是什么的情况下对具体对象进行创建。这样可以减少Factory和对象之间的依赖促进松耦合。
有时候我们在Factory里面需要创建多个接口,比如:工厂方法(Factory)中我只需要创建一个对象的接口即可,但是对象是由很多组件构成的,不同的组件可以组成不同的对象,所以我们只要创建构成对象的组件即可,这时怎么办呢?抽象工厂方法可以完美解决这个问题~~~
-
抽象工厂提供一个大接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
让我们仔细看一张类图,了解一下抽象工厂解决了什么问题?
-
抽象工厂使用抽象的(大)接口来创建构成对象的构件,而不需要知道具体的对象。这样可以减少Factory和对象之间的依赖促进松耦合。
-
抽象工厂使用对象的组合:组成对象构件的创建被实现在工厂接口所暴露出来的方法中。
-
抽象工厂也允许将接口的实现延迟到子类。
-
抽象工厂也是对接口接口编程,而不是具体类,它是依赖于抽象,而不是依赖具体类。
-
抽象工厂也有一个缺点:使用大量的接口方法,当某一个或者多个抽象接口被破环,便会造成子类崩塌式的被破坏。