簡單工廠
1.自定義多個算法
2.算法的實現在工廠類中實現,工廠類中包含一些算法邏輯,根據客戶端選擇條件動態管理相關類
3.客戶端不需要指明調用的算法類
4.對新的產品or算法可擴展,但同時需要修改工廠實現類,實現對修改開發,
工廠方法模式
1.對具體產品有自己的產品工廠
2.對實現哪個產品的判斷移動到客戶端來判斷,需要由客戶端選擇實現的工廠,生成產品
3.如果同時需要增加一個產品,需要同時增加產品類和產品工程類,修改的只是客戶端
abstract class Product
{
public abstract void CreateProduct();
}
//product a
class Product_A extends Product
{
public void CreateProduct()
{
System.out.println("Create Product_A");
}
}
// product b
class Product_B extends Product
{
public void CreateProduct()
{
System.out.println("Create Product_B");
}
}
// Factory
class Product_Factory
{
public Product CreateProduct(int ind)
{
Product pro = null;
if(ind == 1)
pro = new Product_A();
if(ind == 2)
pro = new Product_B();
return pro;
}
}
// 工廠
interface CreateFactory
{
public Product CreateProductFactory();
}
class Factory_A implements CreateFactory
{
public Product CreateProductFactory()
{
return new Product_A();
}
}
class Factory_B implements CreateFactory
{
public Product CreateProductFactory()
{
return new Product_B();
}
}
class Product_Factory_Test
{
public void Product_Factory_Client()
{
// simple factory
Product_Factory fac = new Product_Factory();
fac.CreateProduct(1).CreateProduct();
fac.CreateProduct(2).CreateProduct();
// factory method
CreateFactory Cfa = new Factory_A();
CreateFactory Cfb = new Factory_B();
Cfa.CreateProductFactory().CreateProduct();
Cfb.CreateProductFactory().CreateProduct();
}