简单工厂模式

2018-07-23  本文已影响0人  junjun2018
简单工厂
//公共接口
public interface IFood {
    public void eat();
}
//实现类A
public class Chips implements IFood {
    @Override
    public void eat() {
        System.out.println("吃薯条啦");
    }
}
//实现类B
public class Roast implements IFood {
    @Override
    public void eat() {
        System.out.println("吃烤肉呀");
    }
}
//关键工厂类
public class KFC {
    public IFood getFood(String name) {
        switch (name) {
            case "chips": {
                return new Chips();
            }
            case "roast": {
                return new Roast();

            }
            default: {
                System.out.println("抱歉,没有!");
                return null;
            }

        }
    }
}

//测试类
public class SimpleFactoryTest {
    public static void main(String[] args) {
        KFC kfc = new KFC();
        kfc.getFood("chips").eat();
        kfc.getFood("roast").eat();
    }
}
//结果:
吃薯条啦
吃烤肉呀

优点:将创建对象的工作分离出来,客户端只需要给定部分信息,即可得到对象实例,而不用去了解此对象是经过了哪些处理创建的,实现了结构分离
缺点:一个工厂类融合了各种对象的创建,违背了职责单一原则。当添加新功能时,需要修改工厂类的代码,违背了开闭原则,系统失去灵活性和可维护性。

上一篇下一篇

猜你喜欢

热点阅读