专业的JAVA编程教程与资源

网站首页 > java教程 正文

教你轻松学Java开发23种设计模式 --工厂设计模式

temp10 2024-10-23 15:13:14 java教程 20 ℃ 0 评论

定义:

定义了一个创建产品对象的工厂接口,将实际创建工作推迟到子类工厂当中。

场景模拟:

一个面条项目的方案设计

教你轻松学Java开发23种设计模式 --工厂设计模式

面条项目:要方便面条品种的扩展,要便于维护,要能运行时扩展

面条类设计:

一、普通oop设计方式

总结:

目前的需求解决了,但是一旦新增面条种类,需要修改订单部分的代码,违反了java开闭原则(Open Close Principle),不合理。

二、简单工厂模式:定义一个实例化面条的类,封装创建对象的代码

总结:

解决了上个方案遗留的问题,再次新加对象种类时,无需修改订单部分代码。但项目进一步扩展,在不同地区开展加盟店,然而每个地区制作出的口味不同,进而利用工厂方法模式进行设计。

三、工厂方法模式:定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类(针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例)

总结:

此次改进后,只需在主方法中实例化不同的OrderNoodles对象,就可以体验不同地区的Noodles。

四、抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类(抽象工厂往往有多种方法,可以生产多种产品,即产品簇,比如工厂还可以生产饼,汤等等)。

抽象工厂模式与工厂方法模式的区别:

抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。

适用场景:

无论是简单工厂模式,工厂方法模式还是抽象工厂模式,它们都具有类似的特性,适用场景也十分类似。他们的最终目的都是为了解耦。在使用时,我们不必去在意这个模式到底工厂方法模式还是抽象工厂模式,因为他们之间的演变常常是令人琢磨不透的。经常你会发现,明明使用的工厂方法模式,当新需求来临,稍加修改,加入了一个新方法后,由于类中的产品构成了不同等级结构中的产品族,它就变成抽象工厂模式了;而对于抽象工厂模式,当减少一个方法使的提供的产品不再构成产品族之后,它就演变成了工厂方法模式。

所以,在使用工厂模式时,只需要关心降低耦合度的目的是否达到了。使用工厂方法后,调用端的耦合度大大降低了。并且对于工厂来说,是可以扩展的,以后如果想组装其他的产品,只需要再增加一个工厂类的实现就可以。无论是灵活性还是稳定性都得到了极大的提高。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表