上一篇博文我们说到了工厂模式:https://blog.youkuaiyun.com/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!
三、抽象工厂模式的使用条件
抽象工厂模式是给客户端提供一个接口,可以创建多个产品族中的产品对象
- 系统中有多个产品族,而系统一次只可能消费其中一族产品。
- 同属于同一产品族的产品可以使用

本文详细介绍了抽象工厂模式的概念,通过对比工厂方法模式突出其特点,并提供了具体的代码实现案例。适用于需要创建一系列相关或相互依赖对象的场景。
735

被折叠的 条评论
为什么被折叠?



