java设计模式-工厂系列

一、简单工厂      

1.背景:

任意定制交通工具的类型和生产过程

代码:

Moveable.java 

package com.cy.dp.factory;

public interface Moveable {
    void run();
}

Car.java:

package com.cy.dp.factory;

public class Car implements Moveable{
    
    @Override
    public void run(){
        System.out.println("car running...");
    }
    
}
View Code

Plane:

package com.cy.dp.factory;

public class Plane implements Moveable{

    @Override
    public void run() {
        System.out.println("plane running...");
    }

}
View Code

VehicleFactory.java:

package com.cy.dp.factory;

/**
 * 交通工具工厂
 * @author CY
 *
 */
public abstract class VehicleFactory {
    abstract Moveable create();
}

CarFactory:

package com.cy.dp.factory;

public class CarFactory extends VehicleFactory{

    @Override
    Moveable create() {
        return new Car();
    }
}
View Code

PlaneFactory:

package com.cy.dp.factory;

public class PlaneFactory extends VehicleFactory{

    @Override
    Moveable create() {
        return new Plane();
    }
}
View Code

Test测试类:

package com.cy.dp.factory;

public class Test {
    public static void main(String[] args) {
        VehicleFactory factory = new CarFactory();
        Moveable m = factory.create();
        m.run();
    }
}
View Code
question:
要不要把工厂VehicleFactory设计成接口?
答:可以,接口和抽象类其实是一回事;什么时候用抽象类,什么时候用接口?基本上可以采用这样的方式:如果说这个概念在我们脑中确确实实存在的,那你就用抽象类;如果说这个概念仅仅是某些方面的一个特性,比如说会飞的,能跑的,像这一类的东西,我们就把它设计成接口;如果是比较模糊的概念,不知道设计成抽象类还是接口时,那么设计成接口,原因是我们实现了这个接口之后,还可以从其他的抽象类来继承,更灵活。
 

二、抽象工厂          

猜你喜欢

转载自www.cnblogs.com/tenWood/p/9169324.html
今日推荐