1 工廠模式(Factory Method

2021-07-08 12:28:49 字數 2804 閱讀 9840

一:準備工作

1.建立乙個要生產物件的乙個介面(這類定義乙個水果fruit介面),以及定義乙個方法eat()。

package com.yh.createrpattern.factory;

/** *

* @author yh

* @project designpattern

* @description 定義乙個水果介面

* @vesion 1.0

* @date 2023年12月1日 下午12:25:50

* */

public inte***ce fruit

2.建立兩個具體的水果類(banana,pear)分別實現fruit介面。

package com.yh.createrpattern.factory;

/** *

* @author yh

* @project designpattern

* @description 水果介面的乙個實現類

* @vesion 1.0

* @date 2023年12月1日 下午12:27:18

* */

public class banana implements fruit

}

package com.yh.createrpattern.factory;

/** *

* @author yh

* @project designpattern

* @description 定義乙個水果介面實現的梨子類

* @vesion 1.0

* @date 2023年12月1日 下午12:29:27

* */

public class pear implements fruit

}

二、工廠模式分三種(普通工廠、多個方法的工廠、靜態方法工廠)分別建立三個工廠物件

1.普通工廠

package com.yh.createrpattern.factory;

/** *

* @author yh

* @project designpattern

* @description 水果簡單工廠

* 簡單工廠的弊端:1.當輸入的type字串沒有就會出問題,沒有具體的型別

* @vesion 1.0

* @date 2023年12月1日 下午12:31:29

* */

public class basefruitfactory else if (type.equals("banana")) else

}}

2.多個方法工廠

package com.yh.createrpattern.factory;

/** *

* @author yh

* @project designpattern

* @description 多個工廠模式:直接定義具體的方法

* 好處避免類簡單工廠的型別字串沒有的問題

* @vesion 1.0

* @date 2023年12月1日 下午12:36:01

* */

public class manyfruitfactory

/*** 選擇香蕉

* @return

*/public fruit choicebanana()

}

3.靜態方法工廠

package com.yh.createrpattern.factory;

/** *

* @author yh

* @project designpattern

* @description 水果靜態工廠(不用例項話,直接呼叫方法)

* @vesion 1.0

* @date 2023年12月1日 下午12:39:41

* */

public class staticfruitfactory

public static fruit choicebanner()

}

三、呼叫對應的工廠

package com.yh.createrpattern.factory;

public class mainfactory

/*** 普通工廠

*/public static void basefruitfactory() catch (nullpointerexception e)

} /**

* 多個工廠方法模式

*/public static void manyfruitfactory()

/*** 靜態工廠方法模式

*/public static void staticfruitfactory()

}

總結:

定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method 使個類的例項化延遲到其子類。

適用性:

當乙個類不知道它所必須建立的物件的類的時候。

當乙個類希望由它的子類來指定它所建立的物件的時候。

當類將建立物件的職責委託給多個幫助子類中的某乙個,並且你希望將哪乙個幫助子類是**者這一資訊區域性化的時候。

設計模式 1 工廠模式

本篇部落格主要是總結一下自己對工廠模式的認識,例子可能不太恰當,uml類圖也可能線用錯。不過思想還是正確的 望各位指出錯誤 簡單工廠模式嚴格意義上不屬於設計模式 2.1 抽象產品角色 是具體產品角色的共同父類,提供了乙個標準介面。e.g 將計算機專業看成乙個抽象產品角色 public abstrac...

設計模式 工廠模式 1

2.工廠方法模式 3.抽象工廠模式 public inte ce fruit public class banana implements fruit public class implements fruit public class fruitfactory public static frui...

設計模式 1 工廠模式

介面行模式 職責型模式 構造型模式 不通過類建構函式來建立物件,使用特定的模式來為客戶類建立例項物件 操作型模式 擴充套件型模式 在建立類時,通常可以同時定義多個建構函式來建立這個類的例項。然而有些時候,客戶 雖然需要某個物件,但是卻不關心這個物件究竟是由哪個類建立而來。工廠模式的意圖是定義乙個用於...