計算器的簡單工廠和工廠方法

2021-07-07 08:58:40 字數 1909 閱讀 5392

設計模式這本書學了一多半了,心裡也迷糊迷糊的,不過這在怎麼迷糊也得總結啊,先從第乙個簡單工廠開始吧。簡單工廠模式是進入設計模式世界的第乙個模式,他也告訴了我們物件導向設計時的法則。首先簡單工廠模式告訴我們在設計程式時要盡量復用,其次要封裝,把業務邏輯和介面邏輯分開,降低耦合度,利於擴充套件和維護。其實在簡單工廠中也隱含了單一職責的原則,比如:加減乘除各是乙個類,各自處理自己的演算法。下面舉乙個計算器的例子

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 簡單工廠 //命名空間,

",oper.getresult ());

oper.getresult();}}

}public class operation //運算類 基類

set

}public double numberb //給屬性賦值

set

}public virtual void getresult(); //輸出結果方法 virtual關鍵字使用 虛方法

} class operationadd:operation //類預設修飾符是protected 加法類

", result);

}} class operationsub : operation //減法類

",result);

}}public class operationfactory //運算工廠,根據客戶端,例項化運算類的子類

return oper; //返回物件,可以使用物件的方法。

}}

簡單工廠模式挺簡單的,意在告訴我們程式設計設計時要多注意封裝,復用,降低耦合。

學著學著,又遇到個工廠方法模式,這個模式算是對簡單工廠的提公升,進一步提高了整個程式的耦合度。在簡單工廠模式中,如果要加入乘法,我們必須修改客戶端的**,也要增加乙個乘法子類,而且在工廠中也要增加乙個case語句,很顯然整個程式之間的耦合度還不夠低。而工廠方法進一步降低了整個程式的耦合度,下面看**。

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 工廠方法

}}public class operation //運算類,基類

set

}public double numberb

set

}public virtual void getresult() //虛方法

} inte***ce ifactory //工廠介面

class operationaddifactory:ifactory //加法工廠類,實現介面中的方法。

}class operationsubifactory:ifactory //減法工廠類,實現介面中的方法

}class add:operation // 加法類

",result );

}}class sub:operation //減法類

",result );

}}

通過上面的**,我們知道如果要增加乙個乘法,我們只需要增加乙個乘法子類和乘法工廠就可以了,而不需要修改什麼,這極大的符合了開閉原則。所以,工廠方法要比簡單工廠好多了。

簡單工廠和工廠方法

當我們在實際開發的過程中,經常會用到new這個關鍵字,需要用到什麼類,就new什麼類,非常的方便,但是我們在享受這種便利的同時,這種便利也給我們帶來了一些麻煩 於是我們引入了簡單工廠來解耦 先假設以下情景,假如你有一家飲品店,使用者要自己點飲料 我們先看看如果不用工廠模式我們該怎麼實現這個需求,下面...

簡單工廠和工廠方法

這學期開始開設設計模式這門課,剛開始一直理解不了什麼是簡單工廠什麼是工廠方法,就在自己敲完 後頓悟!工廠方式不在工廠類中進行邏輯判斷,程式可以為不同產品類提供不同的工廠,不同的工廠類和產不同的產品。當使用工廠方法設計模式時,物件呼叫者需要與具體的工廠類耦合 下面來看看兩者的直觀區別 簡單工廠 工廠方...

工廠方法模式 實現計算器

工廠方法模 式 定義了乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到了子類。工廠方法模式可以與簡單工廠模式相對照,功能均是例項化物件,只是簡單工廠方法例項化物件是在case語句裡面,而工廠方法模式例項化物件延遲到了子類。增強了擴張性,但是也加重了客戶端的負擔。缺點 ...