此文章是vip文章,如何查看?  

1,点击链接获取密钥 http://nicethemes.cn/product/view29882.html

2,在下方输入文章查看密钥即可立即查看当前vip文章


关于抽象工厂模式的优点和缺点

  • 时间:
  • 浏览:
  • 来源:互联网

测试抽象工厂

1.定义发送机接口以及它的两种实现类(好的发送机和差的发动机)

package cn.com.abstractfactory;

public interface Engine {
    //发动机接口
    void run();
    void satrt();
}
class goodEngine implements Engine{
    @Override
    public void run() {
        System.out.println("好的引擎,转的块");
    }

    @Override
    public void satrt() {
        System.out.println("好的引擎,启动快,可以自动启停");
    }
}
class lowEngine implements Engine{
    @Override
    public void run() {
        System.out.println("不好的引擎,转的慢");
    }

    @Override
    public void satrt() {
        System.out.println("不好的引擎,启动慢,不能自动启停");
    }
}

2.定义座椅接口以及它的两种实现类(好的座椅和差的座椅)

package cn.com.abstractfactory;

public interface Seat {
    //座椅接口
    void action();
}
class goodSeat implements Seat{
    @Override
    public void action() {
        System.out.println("好的座椅,支持自动按摩");
    }
}
class lowSeat implements Seat {
    @Override
    public void action() {
        System.out.println("不好的座椅,不支持自动按摩");
    }
}

3.定义轮胎接口以及它的两种实现类(好的轮胎和差的轮胎)

package cn.com.abstractfactory;

public interface Tyre {
    //轮胎接口
    void revolve(); //旋转
}
class goodTyre implements Tyre{
    @Override
    public void revolve() {
        System.out.println("好的轮胎,轮胎损耗小");
    }
}
class lowTyre implements Tyre{
    @Override
    public void revolve() {
        System.out.println("不好的轮胎轮胎损耗大");
    }
}

4.定义一个工厂接口,里面实现具体的抽象零件

package cn.com.abstractfactory;

public interface CreateCarFactory {
    //工厂接口 里面实现具体的抽象零件
    Engine createEngine();
    Seat createSeat();
    Tyre createTyre();
}
class goodCarFactory implements CreateCarFactory {
    @Override
    public Engine createEngine() {
        return new goodEngine();
    }

    @Override
    public Seat createSeat() {
        return new goodSeat();
    }

    @Override
    public Tyre createTyre() {
        return new goodTyre();
    }
}
class lowCarFactory implements CreateCarFactory {
    @Override
    public Engine createEngine() {
        return new lowEngine();
    }

    @Override
    public Seat createSeat() {
        return new lowSeat();
    }

    @Override
    public Tyre createTyre() {
        return new lowTyre();
    }
}

测试用例

package cn.com.abstractfactory;

public class Test {
    public static void main(String[] args) {
        //测试抽象工厂模式
        CreateCarFactory c1 = new goodCarFactory();
        CreateCarFactory c2 = new lowCarFactory();
        Engine engine = c1.createEngine();
        engine.run();
        engine.satrt();
        Engine engine1 = c2.createEngine();
        engine1.satrt();
        engine1.run();
        //抽象工厂模式,不可以增加产品,可以增加产品族
    }
}

在这里插入图片描述
总结:
抽象工厂模式不可以增加产品,但是可以增加产品族

本文链接http://element-ui.cn/news/show-630638.aspx