简单工厂

92 阅读1分钟

背景:最近苹果发布了iPhone13的发布会,哎,看得我心痒痒,打开淘宝,一看,价格对于我来说过分"美丽",看了下手里的小米10,内存已提示不足。于是乎,还是搞个自己生产手机的工厂吧,寻个心理安慰。

简单工厂:顾名思义,就是很简单很简单。你给我什么模具,我就生产什么。

//简单工厂
public class PhoneFactorySimple {

    interface Phone{
        //生产手机
        public void producePhone() ;
    }

    static class IPhone implements Phone{
        @Override
        public void producePhone() {
            System.out.println("produce IPhone");
        }
    }
    static class XiaomiPhone implements Phone{
        @Override
        public void producePhone() {
            System.out.println("produce xiaomi phone");
        }
    }

    static class PhoneFactory{
        public static Phone getPhone(String name) {
            if("xiaomi".equals(name)) {
                return new XiaomiPhone();
            }else if("apple".equals(name)) {
                return new IPhone();
            }else {
                return null;
            }


        }
    }
    public static void main(String[] args) {
        //没使用工厂模式之前,使用者和被使用者严重藕合
        //Phone iphone = new IPhone();
        // 使用之后,还是藕合,就是藕合转换到了工厂这里,交由工厂来同意管理生产对象
        Phone iphone = ProductFactory.getPhone("apple");
        if(null!=iphone) {
            iphone.producePhone();
        }
    }
}

总结

  • 优点:简单工厂消除了具体产品的依赖,我们可以动态来选择需要生产的产品
  • 缺点:如果有新的产品要生产,我们都需要重新重新更改工厂代码,产品多了,工厂类会显得很臃肿,违反了开放-封闭原则,不仅不利于拓展,也对修改进行了开放。

tip:准备国庆节了,希望国家繁荣昌盛, I am Liture ,if you get tired,learn to rest,not to quit.