e2

滴滴侠,fai抖

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

发动机产品族:

package abstract_factory_mode;

/**
 * 发动机类型
 */
public interface Engine {
    
    /**
     * 转动
     */
    void run();
    
    /**
     * 启动
     */
    void start();

}


/**
 * 高端发动机
 */
class LuxuryEngine implements Engine {

    @Override
    public void run() {
        System.out.println("转的快!");
    }

    @Override
    public void start() {
        System.out.println("启动快!可以自动启停!");
    }
    
}


/**
 * 低端发动机
 */
class LowEngine implements Engine {

    @Override
    public void run() {
        System.out.println("转的慢!");
    }

    @Override
    public void start() {
        System.out.println("启动慢!");
    }
    
}

 

座椅产品族:

package abstract_factory_mode;

/**
 * 座椅类型
 */
public interface Seat {

    /**
     * 按摩
     */
    void massage();
    
}


/**
 * 高端座椅
 */
class LuxurySeat implements Seat {

    @Override
    public void massage() {
        System.out.println("可以自动按摩!");
    }
    
}


/**
 * 低端座椅
 */
class LowSeat implements Seat {

    @Override
    public void massage() {
        System.out.println("不能按摩!");
    }
    
}

 

轮胎产品族:

package abstract_factory_mode;

/**
 * 轮胎类型
 */
public interface Tyre {

    /**
     * 旋转
     */
    void revolve();
    
}


/**
 * 高端轮胎
 */
class LuxuryTyre implements Tyre {

    @Override
    public void revolve() {
        System.out.println("旋转磨损慢!");
    }
    
}


/**
 * 低端轮胎
 */
class LowTyre implements Tyre {

    @Override
    public void revolve() {
        System.out.println("旋转磨损快!");
    }
    
}

 

工厂类型:

package abstract_factory_mode;

/**
 * 工厂类型, 抽象工厂
 */
public interface CarFactory {

    /**
     * 生产(创建)发动机
     */
    Engine createEngine();
    
    /**
     * 生产座椅
     */
    Seat createSeat();
    
    /**
     * 生产轮胎
     */
    Tyre createTyre();
    
}

 

低端工厂类:

package abstract_factory_mode;

/**
 * 低端工厂类
 */
public class LowCarFactory implements CarFactory {

    
    /**
     * 生产(创建)低端发动机
     */
    @Override
    public Engine createEngine() {
        return new LowEngine();
    }

    
    /**
     * 生产低端座椅
     */
    @Override
    public Seat createSeat() {
        return new LowSeat();
    }

    
    /**
     * 生产低端轮胎
     */
    @Override
    public Tyre createTyre() {
        return new LowTyre();
    }

}

 

高端工厂类:

package abstract_factory_mode;

/**
 * 高端工厂类
 */
public class LuxuryCarFactory implements CarFactory {

    
    /**
     * 生产(创建)高端发动机
     */
    @Override
    public Engine createEngine() {
        return new LuxuryEngine();
    }

    
    /**
     * 生产高端座椅
     */
    @Override
    public Seat createSeat() {
        return new LuxurySeat();
    }

    
    /**
     * 生产高端轮胎
     */
    @Override
    public Tyre createTyre() {
        return new LuxuryTyre();
    }

}

 

类图:

 

测试类:

package abstract_factory_mode;

public class Client {

    public static void main(String[] args) {
        //创建低端工厂对象
        CarFactory factory = new LowCarFactory();
        //生产低端产品族
        Engine e = factory.createEngine();
        Seat s = factory.createSeat();
        Tyre t = factory.createTyre();
        //测试功能
        e.run();
        e.start();
        s.massage();
        t.revolve();
        
        
        //创建高端工厂对象
        CarFactory factory2 = new LuxuryCarFactory();
        //生产高端产品族
        Engine e2 = factory2.createEngine();
        Seat s2 = factory2.createSeat();
        Tyre t2 = factory2.createTyre();
        //测试功能
        e2.run();
        e2.start();
        s2.massage();
        t2.revolve();
        
        
        //大家看到了, 模式有时需要组合使用, 要想拼成一部车, 需要用到建造者模式!
    }
}

 

执行结果:

转的慢!
启动慢!
不能按摩!
旋转磨损快!
转的快!
启动快!可以自动启停!
可以自动按摩!
旋转磨损慢!

 

 

谢谢声明出处!

转自: http://www.cnblogs.com/gscq073240/articles/7125922.html

 

posted on 2017-07-06 13:52  纯黑Se丶  阅读(260)  评论(0编辑  收藏  举报