设计多层应用程序(模板样式)

时间:2010-06-27 05:25:27

标签: c# design-patterns

我打算设计一个易于定制和维护而不影响效率的项目(n层)......这是我(独特​​:))设计布局的草案,基于我在如何构建ntierarchitecture方面所学到的...

该项目由3个DLL(助手类+1)和UI

组成
  1. BusinessRules.dll(由2个子文件夹组成的ValueObjects(DTO)和BusinessObjects)

  2. AppDomainRules.dll(我在这里放置了域名驱动的类,如注册,录取,销售服务类,将使用Business Objects和VOs)

  3. DataAccessLayer.dll 这是代码:

  4. //在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.建议?

    提前感谢:)

1 个答案:

答案 0 :(得分:0)

我建议在将程序限制为特定设计之前弄清楚你的程序需要做什么。

对于允许您存储和读取用户的简单独立应用程序,这可能不会有缺陷,对于需要具有离线/在线功能和功能的多用户系统而言,这可能不是一个好的设计。

除非你正在制作一个“有趣”的项目,否则在构建它之前一定要弄清楚你需要做什么。