被委託編寫一些資產跟蹤軟件... 想要嘗試以正確的方式執行此操作。所以我認爲很多資產都有共同的領域。例如,計算機具有手機也具有的型號和製造商。創建新類型時如何處理多個對象類型
我想存儲計算機,顯示器,手機等。所以我認爲可以使用抽象基類來考慮常見的東西。其他不相互關聯的屬性將存儲在實際的類本身中。
例如,
public abstract class Asset {
private string manufacturer;
public string Manufacturer { get; set; }
//more common fields
}
public class Computer : Asset {
private string OS;
public strin OS { get; set; }
//more fields pertinent to a PC, but inherit those public properties of Asset base
}
public class Phone : Asset {
//etc etc
}
但我有2個顧慮:
1)如果我有一個Web表單,要求別人添加的資產,我想給他們說的一個單選框選擇他們正在創建的資產類型。東西的效果:
你在創建
[]計算機
[]電話
[]監測
[確定] [取消]
而且他們會選擇一個,但我不想結束這樣的代碼:
僞代碼:
select case(RadioButtonControl.Text)
{
case "Computer": Computer c = new Computer(args);
break;
case "Phone": Phone p = new Phone(args);
break;
....
}
這可能會變得醜陋....
問題2)我想在一個數據庫表中該信息這種方式存儲與TYPEID場當插入到數據庫完成本值成爲該行的typeid(區分它是計算機,顯示器,電話等)。這個typeid字段是否應該作爲某種枚舉在基本抽象類中聲明?
謝謝
@Jerry Coffin好的,我相信你和建議。所以我猜想我們想要一些內部寫的東西,這會很簡單。我應該堅持寫一個簡單的應用程序,而不是以面向對象的方式使其複雜化,這就是你所說的嗎?另外,我只需創建一個3層數據層,業務邏輯層和演示文稿,而不需要所有這些OOP和繼承。你怎麼看? – oJM86o 2010-02-02 19:54:10
或多或少,是的。如果您打算使用.NET編寫代碼,那麼您幾乎可以肯定地希望在那裏使用通常的OO內容(例如MVC)。但是,我認爲這些數據是以一個普通的SQL(或其他)數據庫的形式出現的,大部分的設計歸結爲規範化數據,定義鍵和索引等。 – 2010-02-02 20:05:16
好吧,這很有意義。我想我很難確定是否應該用純粹的OOP術語來寫實體。我知道如何在面向對象程序設計中編寫代碼,但是我總是會因爲什麼時候用純粹的面向對象編程來編寫特定應用程序而導致大腦凍結...任何指針? – oJM86o 2010-02-02 20:11:02