工廠模式是最重要的模式,因為大多數模式都需要用到工廠模式。
多數設計模式的內容講解的都是如何設計介面。介面如何產生呢?如果在客戶**(類庫的使用者稱之為客戶)中直接使用具體類,那麼就失去了介面的意義。因為介面的使用目的,就是要降低客戶對具體類的依賴程度。如果在客戶**中直接使用介面,那麼就造成了客戶對具體類名稱的依賴。(客戶最終需要以某種方式指明所需要的具體類,如配置檔案或**,但是只需要指出一次,所以說降低對具體類的依賴程度)。要使客戶**不依賴具體類,唯一的方法,就是讓客戶**不依賴具體類的部分不知道具體類的名稱。知道具體類名稱的部分,僅僅是配置部分。(配置檔案或者配置**)。
依賴不可能完全消除,除非二者毫無聯絡。但是可以將這種依賴的程度降到最低。
既然不能直接建立具體類,那麼就需要通過乙個建立者類來建立介面的實現類。這樣就產生了工廠類。
抽象工廠是應對產品族概念的。比如說,每個農場可能要同時生產蘋果,橘子,大公尺,玉公尺,那麼每乙個農場都要有建立蘋果,橘子,大公尺,玉公尺的方法。
簡單工廠模式:又稱靜態工廠方法(static factory methord)模式。乙個抽象產品類,可以派生多個具體產品類。
用來生產同一等級結構中的任意產品。(對於增加新的產品,無能為力)
public class ******factory
}inte***ce fruit
public void eat()
};class orange implements fruit
};class factorytest
public static factorytest getinstance()
return factory;
} }public orange neworange()
};
工廠方法模式:又稱多型性工廠(polymorphic factory)模式或虛擬構造子(virtual constructor)模式。乙個抽象產品類,可以派生出多個具體產品類。
乙個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類只能建立乙個具體產品類的例項。
用來生產同一等級結構中的固定產品。(支援增加任意產品)
public class factorymethod
}abstract class fru
} @override
public void eat()
}class orangefru extends fru
@override
public void eat()
}abstract class frufac
public abstract fru getfru();
} @override
public fru getfru() }
class orangefac extends frufac
}
抽象工廠模式:又稱工具箱(kit或toolkit)模式。多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。
乙個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類可以建立多個具體產品類的例項。
用來生產不同產品族的全部產品。(對於增加新的產品,無能為力;支援增加產品族)
package model;
public class abstractfactory
}abstract class frui
abstract class food
} @override
public void eat()
}class orangefrui extends frui
@override
public void eat()
}class rice extends food
@override
public void cook() }
class corn extends food
@override
public void cook() }
abstract class fact
public abstract frui getfru();
public abstract food getfood();
}class wuxifact extends fact
@override
public food getfood() }
class nanjinfact extends fact
@override
public food getfood()
}
區別:簡單工廠模式和工廠方法模式只有乙個抽象產品類,而抽象工廠模式有多個。
簡單工廠模式只建立乙個具體工廠類,工廠方法模式的具體工廠類只能建立乙個具體產品類的例項,而抽象工廠模式可以建立多個。
簡單工廠模式 工廠方法模式和抽象工廠模式
第一.簡單工廠模式 有三種元件,乙個介面,n個實現類,乙個工廠類。在建立物件的時候,利用簡單工廠模式,可以根據傳參的不同,建立出不同的實現類物件。實現步驟 1.建立介面 2.建立n個實現類 3.建立工廠類,裡面有返回值型別為介面的方法 見如下 1.建立介面 inte ce sender 2.建立介面...
簡單工廠模式 工廠方法模式和抽象工廠模式
一 簡單工廠模式 將建立物件和操作物件分離開來,實現解耦。簡單工廠模式通過乙個引數變數來決定例項化哪乙個類,主要包括抽象產品類 提供公共方法 具體產品類 覆蓋抽象產品類的公共方法 和產品工廠 根據引數例項化具體產品 三個部分。二 工廠方法模式 如果需要新增乙個產品,那麼簡單工廠模式就需要修改產品工廠...
簡單工廠模式 工廠方法模式 抽象工廠模式
簡單工廠模式 簡單工廠模式並不是23種設計模式中的,但是在實際的應用中卻經常使用。uml圖 簡單工廠模式的建立目標,所有建立的物件都是充當這個角色的某個具體類的例項。在這個模式中,工廠類是整個模式的關鍵所在。它包含必要的判斷邏輯,能夠根據外界給定的資訊,決定究竟應該建立哪個具體類的物件。使用者在使用...