设计模式-工厂方法的应用场景及Java中对工厂方法的应用
生活随笔
收集整理的這篇文章主要介紹了
设计模式-工厂方法的应用场景及Java中对工厂方法的应用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 1.什么是工廠方法模式
- 2. 工廠方法模式優(yōu)/缺點(diǎn)和使用場景
- 2.1 工廠方法模式優(yōu)點(diǎn)
- 2.2 工廠方法模式缺點(diǎn)
- 2.3 工廠方法模式使用場景
- 3. 工廠方法模式簡單案例
- 3.1 創(chuàng)建汽車產(chǎn)品接口
- 3.2 創(chuàng)建AoDi汽車產(chǎn)品類
- 3.3 創(chuàng)建BaoMa汽車產(chǎn)品類
- 3.4 創(chuàng)建汽車工廠
- 3.5 創(chuàng)建寶馬汽車工廠
- 3.6 創(chuàng)建奧迪汽車工廠
- 3.7 創(chuàng)建消費(fèi)者
- 4. 工廠方法模式在Java中的應(yīng)用
- 4.1 org.slf4j.LoggerFactory.getLogger(簡單工廠)
- 4.2 BeanFactory
1.什么是工廠方法模式
- 工廠方法模式是一種創(chuàng)建型設(shè)計模式, 其在父類中提供一個創(chuàng)建對象的方法, 允許子類決定實(shí)例化對象的類型。
- 定義工廠方法模式(Fatory Method Pattern)是指定義一個創(chuàng)建對象的接口,但讓實(shí)現(xiàn)這個接口的類來決定實(shí)例化哪個類,工廠方法讓類的實(shí)例化推遲到子類中進(jìn)行
2. 工廠方法模式優(yōu)/缺點(diǎn)和使用場景
2.1 工廠方法模式優(yōu)點(diǎn)
工廠方法模式是為了克服簡單工廠模式的缺點(diǎn)(主要是為了滿足OCP)而設(shè)計出來的。簡單工廠模式的工廠類隨著產(chǎn)品類的增加需要增加很多方法(或代碼),而工廠方法模式每個具體工廠類只完成單一任務(wù),代碼簡潔。工廠方法模式完全滿足OCP,即它有非常良好的擴(kuò)展性。
2.2 工廠方法模式缺點(diǎn)
每新增一個具體的產(chǎn)品類 都要進(jìn)行一定程度上的修改,可能會修改對應(yīng)的工廠類,當(dāng)同時需要修改多個產(chǎn)品類的時候,對工廠類的修改會變得相當(dāng)麻煩。會增加工作量。
2.3 工廠方法模式使用場景
- 一個類不知道它所需要的對象類,在工廠方法模式中,客戶端不需要指定具體產(chǎn)品類的類名,只需要知道所對應(yīng)的工廠即可,具體的產(chǎn)品對象由具體的工廠類創(chuàng)建客戶端只需要知道創(chuàng)建具體產(chǎn)品的工廠即可
3. 工廠方法模式簡單案例
3.1 創(chuàng)建汽車產(chǎn)品接口
package com.san.manage.modular.test.factory;/*** @ClassName Car* @Description TODO* @Author ZhangSan_Plus* @Date 2022/1/20 14:25* @Version 1.0**/ public interface Car {void name(); }3.2 創(chuàng)建AoDi汽車產(chǎn)品類
package com.san.manage.modular.test.factory;/*** @ClassName AoDi* @Description TODO* @Author ZhangSan_Plus* @Date 2022/1/20 14:27* @Version 1.0**/ public class AoDi implements Car {@Overridepublic void name() {System.out.println("奧迪汽車");} }3.3 創(chuàng)建BaoMa汽車產(chǎn)品類
package com.san.manage.modular.test.factory;/*** @ClassName BaoMa* @Description TODO* @Author ZhangSan_Plus* @Date 2022/1/20 14:28* @Version 1.0**/ public class BaoMa implements Car {@Overridepublic void name() {System.out.println("寶馬汽車");} }3.4 創(chuàng)建汽車工廠
package com.san.manage.modular.test.factory;/*** @ClassName CarFactory* @Description TODO* @Author ZhangSan_Plus* @Date 2022/1/20 9:47* @Version 1.0**/ public interface CarFactory {Car createCar(); }3.5 創(chuàng)建寶馬汽車工廠
package com.san.manage.modular.test.factory;/*** @ClassName BaoMaCarFactory* @Description TODO* @Author ZhangSan_Plus* @Date 2022/1/20 9:49* @Version 1.0**/ public class BaoMaCarFactory implements CarFactory {@Overridepublic Car createCar() {Car car = new BaoMa();System.out.println("寶馬騎車生產(chǎn)");return car;} }3.6 創(chuàng)建奧迪汽車工廠
package com.san.manage.modular.test.factory;/*** @ClassName AoDiCarFactory* @Description TODO* @Author ZhangSan_Plus* @Date 2022/1/20 9:48* @Version 1.0**/ public class AoDiCarFactory implements CarFactory {@Overridepublic Car createCar() {Car car = new AoDi();System.out.println("奧迪汽車完成生成");return car;} }3.7 創(chuàng)建消費(fèi)者
package com.san.manage.modular.test.factory;/*** @ClassName Consumer* @Description TODO* @Author ZhangSan_Plus* @Date 2022/1/20 9:50* @Version 1.0**/ public class Consumer {public static void main(String[] args) {Car car = new AoDiCarFactory().createCar();Car car2 = new BaoMaCarFactory().createCar();car.name();car2.name();} }4. 工廠方法模式在Java中的應(yīng)用
4.1 org.slf4j.LoggerFactory.getLogger(簡單工廠)
4.2 BeanFactory
- org.springframework.beans.factory.BeanFactory(version:5.0.5)
總結(jié)
以上是生活随笔為你收集整理的设计模式-工厂方法的应用场景及Java中对工厂方法的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何保证投票公平_关于公平合理、简便省时
- 下一篇: 行情基础知识概览