JAVA设计模式(二)——抽象工厂模式

1.比较工厂方法模式

工厂方法模式:

  • 一个抽象产品类,可以派生出多个具体产品类。
  • 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。
  • 工厂方法模式只有一个抽象产品类(只能创建一个具体产品类的实例)

抽象工厂模式:

  • 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
  • 一个抽象工厂类,可以派生出多个具体工厂类。
  • 抽象工厂模式有多个产品类(抽象工厂模式可以创建多个)

2.抽象工厂模式举例

比如说工厂可以生产鼠标和键盘。那么抽象工厂的实现类(它的某个具体子类)的对象都可以生产鼠标和键盘,但可能工厂A生产的是罗技的键盘和鼠标,工厂B是微软的。 这样A和B就是工厂,对应于抽象工厂;每个工厂生产的鼠标和键盘就是产品,对应于工厂方法;用了工厂方法模式,你替换生成键盘的工厂方法,就可以把键盘从罗技换到微软。但是用了抽象工厂模式,你只要换家工厂,就可以同时替换鼠标和键盘一套。如果你要的产品有几十个,当然用抽象工厂模式一次替换全部最方便(这个工厂会替你用相应的工厂方法) 所以说抽象工厂就像工厂,而工厂方法则像是工厂的一种产品生产线

3.总结

  1. 抽象工厂模式并不是指抽象类(不要混淆),这里注意区分。
  2. 工厂方法模式更注重的是工厂方法的更改,更细微一点,如替换键盘由微软的生产方法替换到罗技的生产方法。而抽象工厂模式更注重的是工厂的替换,工厂方法的更改是工厂替换后考虑的点。
  3. 工厂方法模式可以看做是生产一个东西,抽象工厂模式看作生产一堆东西,只是对应的厂商不同(实现类)。如果工厂方法模式中Factory生产多个东西就是抽象工厂模式(个人理解)

猜你喜欢

转载自my.oschina.net/u/3429289/blog/1784972