自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

別扯了,工廠方法模式其實很簡單

開發(fā) 前端
Creator 聲明工廠方法,該方法返回一個Product類型的對象。Creator也可以定義一個工廠方法的缺省實現(xiàn),它返回一個缺省的ConcreteProduct對象。可以調(diào)用工廠方法以創(chuàng)建一個Product對象。
  • 本章難度:★★☆☆☆
  • 本章重點(diǎn):用最簡短的篇幅介紹工廠方法模式最核心的知識,理解工廠方法模式的設(shè)計精髓,并能夠靈活運(yùn)用到實際項目中,編寫可維護(hù)的代碼。

大家好,我是冰河~~

今天給大家介紹《Java極簡設(shè)計模式》的第03章,工廠方法模式(FactoryMethod),多一句沒有,少一句不行,用最簡短的篇幅講述設(shè)計模式最核心的知識,好了,開始今天的內(nèi)容。

一、概述

定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。FactoryMethod使一個類的實例化延遲到其子類。

二、適用性

1.當(dāng)一個類不知道它所必須創(chuàng)建的對象的類的時候。

2.當(dāng)一個類希望由它的子類來指定它所創(chuàng)建的對象的時候。

3.當(dāng)類將創(chuàng)建對象的職責(zé)委托給多個幫助子類中的某一個,并且你希望將哪一個幫助子類是代理者這一信息局部化的時候。

三、參與者

1.Product 定義工廠方法所創(chuàng)建的對象的接口。

2.ConcreteProduct 實現(xiàn)Product接口。

3.Creator 聲明工廠方法,該方法返回一個Product類型的對象。Creator也可以定義一個工廠方法的缺省實現(xiàn),它返回一個缺省的ConcreteProduct對象??梢哉{(diào)用工廠方法以創(chuàng)建一個Product對象。

4.ConcreteCreator 重定義工廠方法以返回一個ConcreteProduct實例。

四、類圖

圖片圖片

五、示例

Product

package io.binghe.design.factotymethod;
/**
 * 定義一個接口Work
 * @author binghe
 */
public interface Work {
    /**
     * 定義方法
     */
    void doWork();
}

ConcreteProduct

package io.binghe.design.factotymethod;
/**
 * Work接口的具體實現(xiàn)類
 * @author binghe
 */
public class TeacherWork implements Work {
    public void doWork() {
        System.out.println("老師審批作業(yè)!");
    }
}
package io.binghe.design.factotymethod;
/**
 * Work接口的具體實現(xiàn)類
 * @author binghe
 */
public class StudentWork implements Work {
 @Override
    public void doWork() {
        System.out.println("學(xué)生做作業(yè)!");
    }
}

Creator

package io.binghe.design.factotymethod;
/**
 * 抽象工廠接口
 * @author binghe
 */
public interface IWorkFactory {
    /**
     * 定義獲取Work實例對象的方法
     * @return
     */
    Work getWork();
}

ConcreteCreator

package io.binghe.design.factotymethod;
/**
 * IWorkFactory工廠的實現(xiàn)類
 * @author binghe
 */
public class StudentWorkFactory implements IWorkFactory {
 @Override
    public Work getWork() {
        return new StudentWork();
    }
}
package io.binghe.design.factotymethod;
/**
 * IWorkFactory工廠的實現(xiàn)類
 * @author binghe
 */
public class TeacherWorkFactory implements IWorkFactory {
 @Override
    public Work getWork() {
        return new TeacherWork();
    }
}

Test

package io.binghe.design.factotymethod;
/**
 * 測試類
 * @author binghe
 */
public class Test {
    public static void main(String[] args) {
        IWorkFactory studentWorkFactory = new StudentWorkFactory();
        studentWorkFactory.getWork().doWork();
        
        IWorkFactory teacherWorkFactory = new TeacherWorkFactory();
        teacherWorkFactory.getWork().doWork();
    }
}

Result

學(xué)生做作業(yè)!
老師審批作業(yè)!

好了,今天就到這兒吧,相信大家對工廠方法模式有了進(jìn)一步的認(rèn)識,我是冰河,我們下期見~~

責(zé)任編輯:武曉燕 來源: 冰河技術(shù)
相關(guān)推薦

2013-11-26 16:29:22

Android設(shè)計模式

2010-10-09 09:25:35

Python工廠模式

2020-08-11 11:20:30

Typescript設(shè)計模式

2009-01-15 10:55:29

JavaScript設(shè)計模式抽象工廠

2024-02-20 12:09:32

模式工廠方法接口

2010-09-29 14:48:16

2015-03-02 14:39:07

MySQLMySQL復(fù)制

2009-08-25 12:37:38

個人服務(wù)器架設(shè)

2018-12-24 08:46:52

Kubernetes對象模型

2010-05-07 15:23:52

Oracle系統(tǒng)性能

2013-08-30 10:56:18

Windows 8.1

2011-11-17 16:03:05

Java工廠模式Clojure

2013-09-30 10:11:40

Windows 8技巧

2020-09-23 06:52:49

代碼方法模式

2021-03-06 22:50:58

設(shè)計模式抽象

2023-08-05 13:31:20

工廠方法模式對象

2017-11-06 16:30:33

開源

2015-08-27 09:30:38

2017-06-01 14:00:17

路由器橋接路由WDS

2011-01-05 09:19:50

清潔數(shù)據(jù)中心
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號