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