大白话工厂模式及使用场景
设计模式共23种,按功能可以分为创建型、结构型、行为型,工厂模式属于创建型模式,主要用于创建对象;
比方说造一辆车:
不使用工厂模式
我需要造宝马的时候,就写一个造宝马的方法,需要造奔驰的时候就写一个造奔驰的方法,缺陷很明显,后期不易维护、代码冗余、不符合面向对象的思想;
使用工厂模式
我只需要写一个造汽车的方法,在内部做一些判断,如果参数是宝马我就造宝马,如果是奔驰我就造奔驰,这样后期如果造汽车,只需要调用它的方法传入参数就行;
工厂模式能细分为简单工厂,工厂方法和抽象工厂三种
常见的有简单工厂和工厂方法两种
简单工厂中包含工厂、产品和具体产品三个角色。其中工厂是整个模式的核心,这个类当中包含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的对象。而客户端则可以免除直接创建产品对象的责任。从这个角度上说简单工厂实现了对责任的分割。另外,由于客户端所使用的对象都由工厂生成,并统一转型为产品类型,所以客户端无需关心自己得到的是哪一个具体产品,这样在添加新的具体产品时,就不需要修改客户端的代码,从某种程度上也实现了开放-封闭法则。但是每当需要添加新的具体产品时,就需要修改工厂类。
工厂方法使用了面向对象的多态性,保留了简单工厂的优点,而且克服了它的缺点。
首先,在工厂模式当中,核心的工厂类不再负责所有产品的创建,而是将具体的产品创建交给子类去做。这个核心类成了抽象工厂角色,仅仅负责给出具体工厂子类必须实现的接口。这种进一步抽象的结果是,可以允许系统在不修改具体工厂角色的情况下引进新的产品。
在现实的开发当中,典型的例子就是在servcie层中需要得到DAO对象,通常就会抽象出DAO接口作为产品,接口的实现类作为具体产品,然后提供工厂供service使用。这样就可以分离service和dao的耦合,当DAO添加新的实现类是,service不需要修改。提升系统的扩展性和维护性。
文章来源: huangjie.blog.csdn.net,作者:负债程序猿,版权归原作者所有,如需转载,请联系作者。
原文链接:huangjie.blog.csdn.net/article/details/114025958
- 点赞
- 收藏
- 关注作者
评论(0)