抽象工厂模式

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.三种工厂方法的优缺点。

  `简单工厂模式:虽然不符合设计原则,实际中用的最多。

  ·工厂方法模式:不修改已有的类,通过工厂增加实现的扩展。

  ·抽象工厂模式:不增加产品,可以增加产品族。

posted @ 2018-03-14 14:34  kwdeep  阅读(182)  评论(0编辑  收藏  举报