工廠模式彙總,簡單工廠,抽象工廠,工廠方法模式。

2021-09-11 02:36:36 字數 2331 閱讀 4077

inte***ce realty

//此介面相當於抽象概括房地產整個行業,由內部方法描述房地產行業的內部各種細節。

//以此達到可擴充套件的目的,例如租賃等行為都將在這個介面中展開;

class employee implements realty

}

class houseowner implements realty

}

以上兩個角色都具有售賣行為,可以實現房地產介面,達到共同管理。

需要實現他們,可以使用簡單工廠模式,如下:

class realtyfactory

public static realty provider(string realtytype)

private static realty getinstant(string realtytype)else if ("role".equalsignorecase(realtytype))else return null;}}

測試類:

public class patterntest 

}

測試結果:

抽象工廠模式:

在講抽象工廠模式之前,需要對realtyfactory進行改造,達到不修改原始碼情況下,簡單工廠和抽象工廠並用效果。

class realtyfactory

public static realty provider(string realtytype)

private static realty getinstant(string realtytype)else if ("role".equalsignorecase(realtytype))else return null;}}

abstract class regionabstractfactory

//房地產行業有地區劃分,可以將房地產工廠彙總,構成抽象類,由這個抽象工廠管理所有房地產工廠;

//擴充套件一點,日常工作中,在功能未定的情況下,我們可以將方法宣告為抽象預留出來。

class tangshancity extends regionabstractfactory

public tangshancity()

}//唐山城市的房地產

由於城市的增加,需要為城市建立乙個工廠的提供者,由他們例項化具體工廠:

class factoryprovider 

public static regionabstractfactory getfactory(string factorytype)

private static regionabstractfactory getinstance(string factorytype) else return null;}}

測試方法:

public class patterntest 

}

測試結果:

工廠方法模式:

inte***ce realtyfactory
class tangshanfactory implements realtyfactory

}

以上兩個工廠毫無關聯,在拓展時,也僅需要實現工廠介面即可,而不需要修改原始碼。

class baodingfactory implements realtyfactory

}

abstract class region
class tangshancity extends region

}

class baodingcity extends region

}

測試類:

class test

}

工廠方法模式對工廠和地區同時約束,好處在於:在有新的城市或新的工廠需要加入時,不需要修改原始碼,即可達到共同行為約束的目的,減少修改**帶來的風險。

設計模式之工廠模式(簡單工廠 工廠模式 抽象工廠)

參考博文 侵權必刪 什麼是工廠模式 通過 物件建立 模式繞開new,來避免物件建立 new 過程中所導致的緊耦合 依賴具體類 適用性 使用new建立物件且導致緊耦合的場景。思考 物件導向程式設計要以動態的思維去看待 換句話說,在看 時需要時間概念,發現 在未來的穩定之處和變化之處。一般介面和抽象類是...

簡單工廠,工廠模式,抽象工廠

簡單工廠,工廠模式,抽象工廠 都屬於設計模式中的建立型模型,主要功能,幫助把物件的例項化部分抽取出來,增強系統擴充套件性.1.簡單工廠 簡單工廠模式的工廠類一般是使用靜態方法,通過接收的引數的不同來返回不同的物件例項。不修改 的話,是無法擴充套件的。include using namespace s...

簡單工廠 工廠模式 抽象工廠模式

簡單工廠模式 public class operation set public double numberb set public virtual double getresult 加減乘除類 class operationadd operation class operationsub oper...