4、工厂模式

工厂方法模式定义:定义了一个创建对象的接口,但由于子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类;
“依赖倒置”原则:代码中减少了对具体类的依赖。
 
定义披萨抽象类
public abstract class Pizza {
    public String name;

    public String getName() {
        return this.name;
    }
}
定义披萨具体类1
public class Pizza1 extends Pizza {
    public Pizza1(String name) {
        this.name = name;
    }
}
定义披萨具体类2
public class Pizza2 extends Pizza {
    public Pizza2(String name) {
        this.name = name;
    }
}
定义披萨工厂抽象类
public abstract class PizzaStore {
    public Pizza orderPizza(String type) {
        Pizza pizza;
        pizza = createPizza(type);
        return pizza;
    }

    public abstract Pizza createPizza(String type);
}
定义披萨PizzaStoreFirst工厂具体类
public class PizzaStoreFirst extends PizzaStore {
    @Override
    public Pizza createPizza(String type) {
        Pizza pizza = null;
        if("1".equals(type)) {
            pizza = new Pizza1("Pizza name1");
        }else if ("2".equals(type)) {
            pizza = new Pizza2("Pizza name2");
        }
        return pizza;
    }
}
定义披萨PizzaStoreSecond工厂具体类
public class PizzaStoreSecond extends PizzaStore {
    @Override
    public Pizza createPizza(String type) {
        Pizza pizza = null;
        if("3".equals(type)) {
            pizza = new Pizza1("Pizza name3");
        }else if ("4".equals(type)) {
            pizza = new Pizza2("Pizza name4");
        }
        return pizza;
    }
}
通过继承披萨工厂抽象类可以实现个性化的披萨工厂,同时每个披萨工厂可以定义自己的披萨
 
抽象工厂模式定义:提供一个接口,用于创建相关或者依赖对象的家族,而不需要明确指定具体类。
 
posted @ 2018-10-08 23:47  使用D  阅读(130)  评论(0编辑  收藏  举报