上一篇博文我们说到了工厂模式:https://blog.csdn.net/duan_2018/article/details/79880643
一、与工厂方法模式的区别
工厂方法模式:
- 一个抽象产品类,可以派生出多个具体产品类。
- 一个抽象工厂类,可以派生出多个具体工厂类。
- 每个具体工厂类只能创建一个具体产品类的实例。
- 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
- 一个抽象工厂类,可以派生出多个具体工厂类。
- 每个具体工厂类可以创建多个具体产品类的实例。
- 工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
- 工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
二、代码实例
package pattern; //abstract Factory interface Carsize{} interface Carcolor{} class red implements Carcolor{ public red(){System.out.println("redcar!");} } class green implements Carcolor{ public green(){System.out.println("greencar!");} } class big implements Carsize{ public big(){System.out.println("Bigcar!");} } class small implements Carsize{ public small(){System.out.println("Smallcar! ");} } interface abstractFactory{ public Carcolor createcolor(); public Carsize createsize(); } class bigredfactory implements abstractFactory{ public Carcolor createcolor(){ return new red(); }; public Carsize createsize(){ return new big(); }; } class biggreenfactory implements abstractFactory{ public Carcolor createcolor(){ return new green(); }; public Carsize createsize(){ return new big(); }; } class smallredfactory implements abstractFactory{ public Carcolor createcolor(){ return new red(); }; public Carsize createsize(){ return new small(); }; } class smallgreenfactory implements abstractFactory{ public Carcolor createcolor(){ return new green(); }; public Carsize createsize(){ return new small(); }; } public class Client { public static void main(String[] args){ abstractFactory f = new bigredfactory(); f.createcolor(); f.createsize(); System.out.println(); abstractFactory f1 = new smallgreenfactory(); f1.createcolor(); f1.createsize(); } }
//输出结果 redcar! Bigcar! greencar! Smallcar!
三、抽象工厂模式的使用条件
抽象工厂模式是给客户端提供一个接口,可以创建多个产品族中的产品对象
- 系统中有多个产品族,而系统一次只可能消费其中一族产品。
- 同属于同一产品族的产品可以使用