工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。工厂模式在Java程序系统是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。
工厂模式分为很多种,在不同场景下,有不同的模式。
工厂模式属于创建型设计模式。
1.为什么使用工厂?
解除耦合:下面案例一和案例二可以很好的解释工厂模式如何解耦。
可见button和imageView与客户端是直接依赖的关系,这样耦合度就很高。如果我们在中间加入一个工厂类:
简单的说:客户端无需知道imageView和button的创建过程,只对工厂类提供信息(参数)即可。(就像我只需要给工厂原料,工厂就能给我想要的产品一样)。下面是简单工厂的代码:
不过上面的工厂模式有点问题:在项目升级/扩展模块的时候,每次需要switch判断,如果case多的化,就不那么方便了。我们可以优化为动态创建。
iOS中xib和storeborad本质就是使用工厂模式