java编程思想问题(面向对象与三层架构思想冲突)

来源:百度知道 编辑:UC知道 时间:2024/06/03 01:46:43
我就举最简单的一个例子。 比如我有一个实体类(javaBean),名字是USER,然后,我要实现它的“login”功能。 又或者,我有一个实体类,名字是CAR,我要实现它的"run"功能。

现在问题来了。 按照3层架构的思想,我应该把login方法放到biz(逻辑层)里的IUserBiz接口里,然后再去实现它;同理,应该把run方法做到biz里的ICarBiz接口里,然后去实现它。

但如果按照面向对象的思想。 login是属于User对象的方法,我应该把它放到User类中作为成员方法,即以User.login()的方式调用;对于Car类,同样应该将run方法作为成员方法,以Car.run()方式调用。

这样两种思想就起矛盾了。 请问大家是哪里出了问题?

三层的思想是用来处理业务的,降低耦合便于维护。
在面向对象的基础之上的一点改进,并不是说三层就违背了面向对象的设计原则。你要解决一个稍复杂的问题,就要把它拆开来想,尽量的把相同的模块给抽出来,放在一起管理,这就是设计模式了。
虽然这里你把用户login的方法抽到业务层,这个让结构变复杂了,但是如果你的业务比较多的话,这是值得的。

你的car实现ICarBiz接口,这个接口有run方法

然后你通过某种方式实现ICarBiz ci = new Car();的功能,然后使用ci.run();

说实话,没看明白你在说什么。。。

难道是我语文退步了

引用:但如果按照面向对象的思想。 login是属于User对象的方法,我应该把它放到User类中作为成员方法,即以User.login()的方式调用;对于Car类,同样应该将run方法作为成员方法,以Car.run()方式调用。
诸如此类的应该,等等
这种说法,是相当多数,或者绝大多数的死脑筋。庄子说要理解无用之用。
Pages有一个例子:奶牛和牛奶,你是对奶牛说,把牛奶挤出来,还是对牛奶说,从牛奶子中出来?
我说,奶牛和牛奶,不是个问题。
另外建议阅读martinfowler网站关于Account内容的一堆解决方法。

1、OO与三层架构是两种不同的对待问题的角度。
2、业务较为复杂时,可将方法放在业务层。

你可以用SERVLET来写。这样方便传参