设计模式_JAVA实现_01_简单工厂模式

2018-09-18  本文已影响0人  依米_2c5a

1个接口

/**
* 定义所有汽车类的公共接口
*/
public interface Car {
    /**
    *   声明所有汽车类都必须具有的功能
    */
    String getName();
}

n个实现类

/**
 * 定义汽车类接口的一个实现类 - 奥迪类
 */
public class Audi implements Car {
    /**
     * 奥迪类必须实现接口声明的功能
     */
    public String getName() {
        return "Audi";
    }
}
/**
 * 定义汽车类接口的一个实现类 - 奔驰类
 */
public class Benz implements Car {
    /**
     * 奔驰类必须实现接口声明的功能
     */
    public String getName() {
        return "Benz";
    }
}
/**
 * 定义汽车类接口的一个实现类 - 宝马类
 */
public class Bmw implements Car {
    /**
     * 宝马类必须实现接口声明的功能
     */
    public String getName() {
        return "Bmw";
    }
}

1个工厂类

/**
 * 定义一个汽车工厂类
 */
public class CarFactory {
    /**
     * 在工厂类中定义一个 静态方法
     * 接受一些参数,生产对应的汽车
     */
    public static Car getCar(String name) {
        if ("Audi".equalsIgnoreCase(name)) {
            return new Audi();
        }
        if ("Benz".equalsIgnoreCase(name)) {
            return new Benz();
        }
        if ("Bmw".equalsIgnoreCase(name)) {
            return new Bmw();
        }
        return null;
    }
}

测试类

public class Test1 {
    public static void main(String[] args) {
        // 用不同的参数调用汽车工厂的静态方法
        // 生产三个不同的汽车对象
        Car audi = CarFactory.getCar("Audi");
        Car benz = CarFactory.getCar("Benz");
        Car bmw = CarFactory.getCar("Bmw");
        // 查看三个汽车对象的信息
        System.out.println(audi.getName());
        System.out.println(benz.getName());
        System.out.println(bmw.getName());
    }
}
上一篇下一篇

猜你喜欢

热点阅读