当前位置:首页 > 工厂设计模式
近一年来,我写代码是失败的,没扩展性,每新增一个模块就得改动很多,if else语句或者配置文件成堆,万一if else和配置文件不管用了,就往数据库中加字段,这样的代码会让人吐血的。所以说,我一直是苦逼青年,机械地写着很戳的代码。近段时间,我好好地用Rational Rose分析了一下设计模式中的工厂模式,以此了结之前的开发模式。
工厂模式分为三种
1. 简单工厂模式(不推荐) 2. 工厂方法模式(推荐) 3. 抽象工厂模式(推荐)
先说下简单工厂模式吧,我们往往看到的就是一个BeanFactory,然后里面有个static方法,这种模式,很常见,面试都会考,因为它体现出了java的基本特征:封装。但是,你要看到static这个关键字, static是静态的意思,也就是说是静态绑定,子类无法继承这个方法,那怎么扩展啊,你不可能换BeanFactoy吧,只能修改static方法。所以违反了java的另外特征:多态和继承。我上网查了下,真正违反的是OCP设计原则(开闭原则:对扩展是开放的,对修改是关闭的)。 简单工厂设计模式
再看工厂方法模式
工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。 工厂方法设计模式,避免了Beanfactory违法OCP设计原则。
优点:通过扩展增加BeanFactory的能力,客户依赖的是工厂,而不是依赖于某种具体事项,可以有不同的dao。
缺点:客户端依赖于一个具体的工厂实现,而且客户端每多一个需求,就要创建一个新的具体工厂类
工厂方法设计模式
抽象工厂设计模式
抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。
应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。
共分享92篇相关文档