抽象工厂模式与工厂方法模式类似,但是在抽象工厂模式中,抽象产品种类可能是一种或多种,从而构成一个或多个产品族,一族产品可以分不同的等级。英文陈述:Provide an interface for creating families of related or dependent objects without specifying their concrete classes(为创建一组或相互依赖的对象提供一组接口,而不用指明它们的具体类)。
组成和工厂方法模式相同。
示例代码:
1 2 3 4 5 6 7 8 9
package co.lujun.abstractfactory;
/** * Created by lujun on 2015/8/31. */ publicabstractclassAbstractFactory {//抽象工厂,两个产品族 publicabstract Car createCar(); publicabstract People createPeople(); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
package co.lujun.abstractfactory;
/** * Created by lujun on 2015/8/31. */ publicclassFactoryextendsAbstractFactory {//具体工厂
@Override public Car createCar() { returnnewAudi(); }
@Override public People createPeople() { returnnewStudent(); } }
1 2 3 4 5 6 7 8
package co.lujun.abstractfactory;
/** * Created by lujun on 2015/8/31. */ publicinterfacePeople {//抽象产品角色 voidspeak(); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
package co.lujun.abstractfactory;
import android.util.Log;
/** * Created by lujun on 2015/8/31. */ publicclassStudentimplementsPeople {//具体产品角色
privatefinalstaticStringTAG="tag";
@Override publicvoidspeak() { Log.i(TAG, "I'm a student!"); } }