工廠方法模式

2021-06-12 22:22:05 字數 2449 閱讀 2374

工廠方法模式:定義乙個建立產品物件的工廠介面,讓子類決定例項化哪一種例項物件,也就是將實際建立例項物件的工作推遲到子類當中,核心工廠類不再負責具體產品的建立。可以這樣理解工廠模式:由乙個抽象工廠定義了建立產品的介面,但是具體是哪一種產品抽象工廠是不知道的,產品的例項化工作被推遲到具體工廠中。

**實現:

抽象產品:

package com.demo.factorymethod.product;

public abstract class abstractproduct

public abstract void show();

}

具體產品:

package com.demo.factorymethod.product;

public class product1 extends abstractproduct

}

抽象工廠:

package com.demo.factorymethod.factory;

import com.demo.factorymethod.product.abstractproduct;

public inte***ce ifactory

具體工廠:

package com.demo.factorymethod.factory;

import com.demo.factorymethod.product.abstractproduct;

import com.demo.factorymethod.product.product1;

public class factoryimpl1 implements ifactory

@override

public abstractproduct createproduct()

}

測試**:

package com.demo.factorymethod;

import com.demo.factorymethod.factory.factoryimpl1;

import com.demo.factorymethod.factory.ifactory;

import com.demo.factorymethod.product.abstractproduct;

public static void main(string args)

}

結果輸出:

this is a product1.

如果又想生產其他的產品product2,在保持原有程式的穩定性的情況下,該如何修改?可以再定義乙個具體的工廠去例項化新的例項物件。

**實現:

具體產品:

package com.demo.factorymethod.product;

import com.demo.factorymethod.product.abstractproduct;

public class product2 extends abstractproduct

}

具體工廠:

package com.demo.factorymethod.factory;

import com.demo.factorymethod.product.abstractproduct;

import com.demo.factorymethod.product.product2;

public class factoryimpl2 implements ifactory

@override

public abstractproduct createproduct()

}

測試**:

package com.demo.factorymethod;

import com.demo.factorymethod.factory.factoryimpl2;

import com.demo.factorymethod.factory.ifactory;

import com.demo.factorymethod.product.abstractproduct;

public static void main(string args)

}

結果輸出:

this is product2.

使用工廠方法模式的適用場合:

1) 當子類的型別可能會有很多,以後需要不斷增添不同的子類實現時;

2) 當乙個系統尚在框架設計階段,還不知道將來需要例項化那些具體類時;

3) 系統設計之初不需要具體物件的概念;

4) 需要生成複雜的物件時。

工廠方法模式 工廠方法模式

工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...

工廠方法模式 工廠方法模式 二

工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...

工廠方法模式(一) 簡單工廠方法模式

ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...