偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

別扯了,工廠方法模式其實(shí)很簡(jiǎn)單

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

大家好,我是冰河~~

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

一、概述

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

二、適用性

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

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

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

三、參與者

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

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

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

4.ConcreteCreator 重定義工廠方法以返回一個(gè)ConcreteProduct實(shí)例。

四、類圖

圖片圖片

五、示例

Product

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

ConcreteProduct

package io.binghe.design.factotymethod;
/**
 * Work接口的具體實(shí)現(xiàn)類
 * @author binghe
 */
public class TeacherWork implements Work {
    public void doWork() {
        System.out.println("老師審批作業(yè)!");
    }
}
package io.binghe.design.factotymethod;
/**
 * Work接口的具體實(shí)現(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實(shí)例對(duì)象的方法
     * @return
     */
    Work getWork();
}

ConcreteCreator

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

Test

package io.binghe.design.factotymethod;
/**
 * 測(cè)試類
 * @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è)!

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

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

2013-11-26 16:29:22

Android設(shè)計(jì)模式

2010-10-09 09:25:35

Python工廠模式

2020-08-11 11:20:30

Typescript設(shè)計(jì)模式

2009-01-15 10:55:29

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

2010-09-29 14:48:16

2024-02-20 12:09:32

模式工廠方法接口

2015-03-02 14:39:07

MySQLMySQL復(fù)制

2009-08-25 12:37:38

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

2018-12-24 08:46:52

Kubernetes對(duì)象模型

2010-05-07 15:23:52

Oracle系統(tǒng)性能

2013-08-30 10:56:18

Windows 8.1

2013-09-30 10:11:40

Windows 8技巧

2011-11-17 16:03:05

Java工廠模式Clojure

2021-03-06 22:50:58

設(shè)計(jì)模式抽象

2020-09-23 06:52:49

代碼方法模式

2017-11-06 16:30:33

開源

2015-08-27 09:30:38

2017-06-01 14:00:17

路由器橋接路由WDS

2023-08-05 13:31:20

工廠方法模式對(duì)象

2011-01-05 09:19:50

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

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