大白话工厂模式及使用场景

简介: 设计模式共23种,按功能可以分为创建型、结构型、行为型,工厂模式属于创建型模式,主要用于创建对象

设计模式共23种,按功能可以分为创建型、结构型、行为型,工厂模式属于创建型模式,主要用于创建对象


比方说造一辆车:


不使用工厂模式


我需要造宝马的时候,就写一个造宝马的方法,需要造奔驰的时候就写一个造奔驰的方法,缺陷很明显,后期不易维护、代码冗余、不符合面向对象的思想;


使用工厂模式


我只需要写一个造汽车的方法,在内部做一些判断,如果参数是宝马我就造宝马,如果是奔驰我就造奔驰,这样后期如果造汽车,只需要调用它的方法传入参数就行;


工厂模式能细分为简单工厂,工厂方法和抽象工厂三种


常见的有简单工厂和工厂方法两种


简单工厂中包含工厂、产品和具体产品三个角色。其中工厂是整个模式的核心,这个类当中包含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的对象。而客户端则可以免除直接创建产品对象的责任。从这个角度上说简单工厂实现了对责任的分割。另外,由于客户端所使用的对象都由工厂生成,并统一转型为产品类型,所以客户端无需关心自己得到的是哪一个具体产品,这样在添加新的具体产品时,就不需要修改客户端的代码,从某种程度上也实现了开放-封闭法则。但是每当需要添加新的具体产品时,就需要修改工厂类。


工厂方法使用了面向对象的多态性,保留了简单工厂的优点,而且克服了它的缺点。

首先,在工厂模式当中,核心的工厂类不再负责所有产品的创建,而是将具体的产品创建交给子类去做。这个核心类成了抽象工厂角色,仅仅负责给出具体工厂子类必须实现的接口。这种进一步抽象的结果是,可以允许系统在不修改具体工厂角色的情况下引进新的产品。


在现实的开发当中,典型的例子就是在servcie层中需要得到DAO对象,通常就会抽象出DAO接口作为产品,接口的实现类作为具体产品,然后提供工厂供service使用。这样就可以分离service和dao的耦合,当DAO添加新的实现类是,service不需要修改。提升系统的扩展性和维护性。


相关文章
|
4月前
|
设计模式
二十三种设计模式全面解析-装饰器模式-超越继承的灵活装扮
二十三种设计模式全面解析-装饰器模式-超越继承的灵活装扮
|
3月前
|
设计模式 安全 Java
Java设计模式—单例模式的实现方式和使用场景
那么为什么要有单例模式呢?这是因为有的对象的创建和销毁开销比较大,比如数据库的连接对象。所以我们就可以使用单例模式来对这些对象进行复用,从而避免频繁创建对象而造成大量的资源开销。
54 1
|
4月前
|
设计模式
二十三种设计模式全面解析-建造者模式:构建完美对象的秘密武器
二十三种设计模式全面解析-建造者模式:构建完美对象的秘密武器
|
4月前
|
设计模式 XML JSON
二十三种设计模式全面解析-工厂模式:创造对象的魔法工厂
二十三种设计模式全面解析-工厂模式:创造对象的魔法工厂
|
4月前
|
设计模式 Java
根据真实业务场景去实现一下设计模式中的装饰者模式
根据真实业务场景去实现一下设计模式中的装饰者模式
18 0
|
10月前
|
设计模式 前端开发 Java
工作中简单工厂模式用法及其使用场景?
工作中简单工厂模式用法及其使用场景?
77 0
|
10月前
|
设计模式 测试技术
工作中模板方法模式用法及其使用场景
工作中模板方法模式用法及其使用场景
75 0
|
10月前
|
设计模式 算法 测试技术
工作中策略模式用法及其使用场景?
工作中策略模式用法及其使用场景?
100 0
|
10月前
|
Java 测试技术 容器
工作中责任链模式用法及其使用场景?
工作中责任链模式用法及其使用场景?
81 0
|
设计模式 开发框架 Java
24. 请你谈谈单例模式的优缺点,注意事项,使用场景
24. 请你谈谈单例模式的优缺点,注意事项,使用场景
244 0

热门文章

最新文章