我計劃設計一個易於定製和維護且不影響效率的項目(n層)......這裏是我的(獨特的)設計佈局草案基礎上,我就如何建立ntierarchitecture了...設計多層應用程序(模板樣式)
該項目由3倍的DLL(+1助手類)和UI
BusinessRules.dll(2個ValueObjects撰寫(DTO)和BusinessObjects)
應用程序DomainRules.dll(我把這裏的領域驅動類,如註冊,許可銷售服務類,將使用Business Objects和VOS)
DataAccessLayer.dll 這裏是代碼:
//在BusinessRules.DLL,子文件夾的ValueObject
public class Person
{
// getters and setters
public string ID { get; set; }
public string Name { get; set; }
}
// in BusinessRules.DLL, sub folder Business Objects
public class PersonBLL
{
public void AddNewPerson(Person Person)
{
new PersonDAL().SaveNewPerson(Person);
}
//side-question:
//should I inherit the Person VO and do it like this
//public void AddNewPerson()
//{
// new PersonDAL().SaveNewPerson(this);
//}
// which is more efficient???
}
// in DataAccessLayer.DLL
public class PersonDAL
{
public void SaveNewPerson(Person Person)
{
// Save to DB
}
}
// in AppDomainRules.DLL, base class
public abstract class RegistrationTemplate
{
public virtual void RegisterNewPerson(Person m)
{
new PersonBLL().AddNewPerson(m);
}
}
//Client 1 registration domain logic
public class RegistrationForClient1 : RegistrationTemplate
{
// will use the template
}
// Client 2 registration domain logic
public class RegistrationForClient2 : RegistrationTemplate
{
// overrides the template
public override void RegisterNewPerson(Person m)
{
// change the behavior of PersonBLL.AddNewPerson
// different implementation
}
}
// UI Implementation for Client1
static void Main(string[] args)
{
Person m = new Person()
{
ID = "1",
Name = "John Mortred"
};
new RegistrationForClient1().RegisterNewPerson(m);
}
我的首要任務/目標是: 1.效率 2.可維護性/定製/可靠/可擴展性 3. RAD(系統快速開發)
我的問題: 您的意見, 1.設計是否有缺陷?代碼效率如何?性能? 2.我是否違反了OOP archi或分層設計的一些規則? 3.這種設計鬆散/低耦合? 4.我可以使用它來實現我的目標嗎? 5.建議?
在此先感謝:)
KISS和YAGNI - 學習+愛=易於維護的代碼。 – 2010-06-27 05:54:12
好吧,我們有一個系統(忠誠卡系統),我們有很多客戶使用該系統,但他們有不同的實現,比如說,定製。現在,項目設置是,每個客戶都有自己獨立的VS項目解決方案,我說過,所有的客戶都會定製它,像添加一些功能,所以我們決定分開項目。問題在於,隨着許多客戶訂閱我們,維護變得越來越難,每次新客戶訂閱時,我們都必須創建另一個項目,我的解決方案就是將所有項目合併爲一個,然後在設計中完成這項工作。 – csharpnoob 2010-06-27 06:05:06
關注複合應用程序(不是CompositeUI Block),我認爲這更符合您所尋找的內容。 – 2010-06-27 06:11:40