如何使用BLL、DAL和Model?

4
在我的公司中,我必须使用Bll、Dal和模型层来创建带有数据库的应用程序。在学校里,我学到了每个数据库表都应该是我的模型中的一个对象。所以我创建了整个数据库的模型。同时,我也知道每个表(或模型对象)都应该在DAL中创建一个DAO。所以我也这样做了。
现在我陷入了BLL类的困境。我可以为每个DAO/模型对象编写一个BLL类,或者我可以编写一个组合一些(逻辑)DAO的BLL类...或者我可以只编写一个管理所有内容的Bll类。(我确定最后一种方法不是最好的...)
处理这个Bll“问题”的最佳实践是什么?
还有一个问题。如果BLL需要另一个表的表内容,而它不负责该表,最好的方法是从负责的BLL那里询问还是直接去DAO?
我已经苦恼了两个月,不知道如何处理这些问题。
2个回答

5
你应该从需要使应用程序工作的内容开始。
例如:“我需要一个Web用户界面来进行用户登录”
接下来:
1. 我需要一个控制器,使用模型来检查昵称和密码。 2. 然后我需要一个BLL对象来执行检查昵称和密码的逻辑。 3. 接着我需要一个DAL对象来访问数据库以检索用户信息。
如果你不像这样从上到下地思考,那么你将会编写很多永远不会被使用的代码。
注意:如果dal是orm映射还是其他方式并不重要。同样,模型是否使用bsl或bsl是否使用模型也不重要。在我看来。

-5
我在学校学到的是,每个数据库表都应该是我的模型中的一个对象。
所以你没有学习面向对象编程?继承?将多个对象类型映射到一个表格?只是简单的“愚蠢”的每个表格都是一个对象吗?有更合理的方法来映射对象。所有这些方法都有自己不同的优点和缺点(例如,您可以根据情况选择它们,其中包括每个对象中的字段数量)。
此外,我还学到了,对于每个表格(或模型对象),都应该创建一个DAO到DAL中。
去找学校,要回钱——他们是白痴。生成的DAO从一开始就很糟糕。每个对象都有一个DAO会变得更糟。配置胜过代码——通用DAO可以处理x个不同的对象,具体取决于配置。测试和加载的代码要少得多。这就是正确的框架如何处理它的(如Hibernate/NHibernate)。您可以轻松编写一个DAL,它在操作期间公开约半打方法,并处理无限数量的对象。在开始时,您告诉每个DAL它必须处理哪个对象以及如何处理,以便它可以生成适当的SQL等。
那么,如何处理这个Bll“问题”最佳实践是什么?

回到学校,学习基础知识。阅读关于O/R映射器的资料,如Hibernate / NHibernate(您不需要指定使用的语言),Toplink等。

如果某个业务逻辑层需要从另一个表中获取内容,而它并不负责这个表,最好的方法是什么?去询问负责的业务逻辑层还是直接访问数据访问对象(DAO)?

这取决于架构。通常情况下,业务对象将来自工厂,并且只应该与工厂交互。然后,工厂将处理DAL - 在做缓存等非常有趣的事情之前和之后。

阅读Hibernate / NHibernate的相关资料。

另外一本好书是"Scott Ambler's"的古老著作"Building Object Applications that work"。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接