抽象工厂模式
1、抽象工厂模式:依赖生产产品族的全部产品,他可以支持产品族的增加。
2.抽象工厂是工厂模式的升级版,有许多的业务品种的时候,业务分类,通过抽象工厂模式产生需要的对象是一种好的解决方案。
3.代码实现及其分析
·我们以生产汽车为例,进行分析,首先我们需要创建汽车,要创建发动机,座椅等,然后将其组装成一个汽车。下来开始案例。
(1)我们首先创建一个发动机
第一步:创建抽象类,然后实现方法,创建各自的实现
package kw.test.cxgcms; /* * 发动机接口 */ public interface Engine { public void run(); public void start(); }
第二步实现类
package kw.test.cxgcms; /* * 好的发动机 */ public class GoodEngine implements Engine{ @Override public void run() { // TODO Auto-generated method stub System.out.println("run is fast!"); } @Override public void start() { // TODO Auto-generated method stub System.out.println(" fast!"); } }
package kw.test.cxgcms; /* * 差发动机 */ public class BadEngine implements Engine{ @Override public void run() { // TODO Auto-generated method stub System.out.println("run is slow!"); } @Override public void start() { // TODO Auto-generated method stub System.out.println("slow!"); } }
(2)创建椅子
第一步:
package kw.test.cxgcms; public interface Seat { public void sitting(); }
第二步:
package kw.test.cxgcms; public class GoodSeat implements Seat{ @Override public void sitting() { // TODO Auto-generated method stub System.out.println("soft"); } }
package kw.test.cxgcms; public class BadSeat implements Seat{ @Override public void sitting() { // TODO Auto-generated method stub System.out.println("badly"); } }
组件都已经创建好了,下来开始组装汽车
package kw.test.cxgcms; public interface CarZJFactory { public Engine getEngine(); public Seat getSeat(); }
其他的根据组装的方法,进行组装成自己的汽车
package kw.test.cxgcms; public class BadCarFactory implements CarZJFactory{ @Override public Engine getEngine() { // TODO Auto-generated method stub return new BadEngine(); } @Override public Seat getSeat() { // TODO Auto-generated method stub return new BadSeat(); } }
package kw.test.cxgcms; public class GoodCarFactory implements CarZJFactory{ @Override public Engine getEngine() { // TODO Auto-generated method stub return new GoodEngine(); } @Override public Seat getSeat() { // TODO Auto-generated method stub return new GoodSeat(); } }
4.三种工厂方法的优缺点。
`简单工厂模式:虽然不符合设计原则,实际中用的最多。
·工厂方法模式:不修改已有的类,通过工厂增加实现的扩展。
·抽象工厂模式:不增加产品,可以增加产品族。