我打算设计一个易于定制和维护而不影响效率的项目(n层)......这是我(独特:))设计布局的草案,基于我在如何构建ntierarchitecture方面所学到的...
该项目由3个DLL(助手类+1)和UI
组成BusinessRules.dll(由2个子文件夹组成的ValueObjects(DTO)和BusinessObjects)
AppDomainRules.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或Tiered设计的规则? 这个设计是松散/低耦合的吗? 4.我可以用这个来实现我的目标吗? 5.建议?
提前感谢:)
答案 0 :(得分:0)
我建议在将程序限制为特定设计之前弄清楚你的程序需要做什么。
对于允许您存储和读取用户的简单独立应用程序,这可能不会有缺陷,对于需要具有离线/在线功能和功能的多用户系统而言,这可能不是一个好的设计。
除非你正在制作一个“有趣”的项目,否则在构建它之前一定要弄清楚你需要做什么。