問題描述:
使用工廠模式實現簡單計算器的加減乘數功能。
工廠方法模式,定義了乙個用於建立物件的介面,封裝物件的建立,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類中。
**與簡單工廠的區別:**
簡單工廠模式的優點是工廠類中包含了必要的邏輯判斷,根據增加需求來動態的例項化相關的類,去除了與具體產品的依賴。
在簡單工廠模式中,當增加需求時,需要修改原有的工廠類,增加新的類,對擴充套件開放了,對修改也開放了,違背了開放-封閉原則。
工廠模式中,當增加需求時,不需要修改原有的工廠類,只需要增加此類需求的類和相應的工廠類即可。符合開放-封閉原則。
****如下:**
操作類如下
// 操作基類
class operation;
// 加減乘數類
class operationadd : public operation
};class operationsub : public operation
};class operationmul : public operation
};class operationdiv : public operation
};
工廠抽象類和工廠具體類:
// 抽象工廠類
class ifactory
;// 具體工廠類
class addfactory : public ifactory
};class subfactory : public ifactory
};class mulfactory : public ifactory
};class divfactory : public ifactory
};
main 函式:
void main()
catch(char* perr)
delete pope;
pope = null;
delete pfactory;
pfactory = null;
system("pause");
}
執行結果如下:
當需要修改乘法運算為「+」運算時,只需要重新生成main函式中的ifactory* pfactory例項。降低**的耦合度,對其餘**沒有影響。
設計模式 工廠模式 抽象工廠模式
建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...
設計模式 工廠設計模式
用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...
設計模式 工廠設計模式
工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...