我计划设计一个易于定制和维护且不影响效率的项目(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