工廠模式

工廠設計模式分爲簡單工廠和現在用的較多的抽象工廠,先介紹簡單工廠。

簡單工廠

public interface Milk {
    public String getName();
}
public class Mengniu implements Milk{
    @Override
    public String getName() {
        return "蒙牛";
    }
}
public class YiLi implements Milk{
    @Override
    public String getName() {
        return "伊利";
    }
}
public class GuangMing implements Milk{
    @Override
    public String getName() {
        return "光明";
    }
}
public class SimpleFactory {

    public Milk getMilk(String name){
        if ("蒙牛".equals(name)){
            return new Mengniu();
        }else if ("伊利".equals(name)){
            return new YiLi();
        }else if ("光明".equals(name)){
            return new GuangMing();
        }else {
            return null;
        }
    }
}
public class Test {
    public static void main(String[] args) {
        SimpleFactory simpleFactory = new SimpleFactory();
        System.out.println(simpleFactory.getMilk("伊利").getName());
        System.out.println(simpleFactory.getMilk("蒙牛").getName());
    }
}

簡單工廠模式在需要添加新的工廠時,就需要修改代碼,違反了高內聚的原則,而抽象工廠模式較好的實現了“開放-封閉”原則,是三個模式中較爲抽象,並具一般性的模式。

抽像工廠模式

public class Test {
    public static void main(String[] args) {
        MilkFactory milkFactory = new MilkFactory();
        System.out.println(milkFactory.getGuangMing().getName());
        System.out.println(milkFactory.getMengNiu().getName());
    }
}
public abstract class AbstractFactory {
    public abstract Milk getMengNiu();
    public abstract Milk getYiLi();
    public abstract Milk getGuangMing();
}
public class MilkFactory extends AbstractFactory {
    @Override
    public Milk getMengNiu() {
        return new Mengniu();
    }

    @Override
    public Milk getYiLi() {
        return new YiLi();
    }

    @Override
    public Milk getGuangMing() {
        return new GuangMing();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章