抽象工厂模式
抽象工厂与工厂方法之间的不同主要在于抽象工厂模式,产品内部的各个部件之间的约束关系体现了出来,给人一种成套出现的感觉.而工厂方法则将产品内部各个部分之间相互独立出来.各个产品之间没有相互关系.
例如: cpu+主板+硬盘组成一台电脑.每一种有intel和amd两个品牌.若我对cpu,主板,和硬盘分别建立一个工厂类,里面包含两种方法,分别生产intel和amd品牌的东西.生产 电脑时需要分别从三个工厂中拿相应品牌的cpu,主板和硬盘,然后组装.这就是工厂方法.
若我对两个厂家intel和amd分别建立一个工厂类,每一个类中包含三种生产cpu.主板和硬盘的方法.生产电脑时,只需要传入一个intel工厂或者amd工厂,然后从这个工厂中拿cpu,主板以及硬盘,组装电脑.这就是抽象工厂.
抽象工厂优点:
抽象工厂能够体现产品之间约束关系.例如:intel工厂,只能生产的是intel的一套东西.利用它生产的电脑肯定是intel套装.当需要更换套装时.只需要变换传入的工厂实例.例如换成amd工厂.客户端不需要改动.
缺点:当需要在产品族中添加一种产品时,抽象工厂需要修改每一个工厂类.在其中添加新产品.例如在每一个工厂中添加一个生产内存的方法.但工厂方法,不需要修改原来已有的工厂,只需要添加一个新的内存工厂就可以了.
参考: http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html