网站服务的 MVC 框架含有 OOP 思想吗?

2020-09-20 20:33:48 +08:00
 oahebky

在设计 web 框架 -- MVC 模式的框架,有和 OOP 搭上关系吗?或者说在设计框架的时候有考虑到面向对象吗?

如果有的话,面向对象是怎么个面向法?

以 request 为对象?

以 SQL (数据库) 的 xxx 表 为对象?


这可能是个比价宽泛的问题;

也可以换句话说,OOP 的方式在 web 框架上有起到和 POP (面向过程编程)怎么样不同的作用吗?

1310 次点击
所在节点    程序员
4 条回复
charlie21
2020-09-20 20:59:15 +08:00
ORM 是典型的面向对象编程 / 面向过程编程的分界线:直觉以为它该是面向对象的,但它却可以借助 “动态生成类型” 这一特性给人一种面向过程编程的感觉。

原因是研究的不再是 “对象的 API ” 了,而是 “对象是怎么生成的” 这一过程。

在写书时,这些辞藻本身只是作者方便描述而给读者灌输的一个感觉。感性认识不必教条
shawn4me
2020-09-21 05:41:16 +08:00
还是取决于如何如何对问题进行抽象吧
opengps
2020-09-21 07:52:37 +08:00
简单来说,mvc 的 m,就是 oOp 的 O
ruoge3s
2020-09-21 09:17:40 +08:00
mvc 是设计模式,oop 是编程思想。opp 编程,有三大特性-封装、继承、多态。mvc 的框架中,controller 层面上,我们可以有 BaseController,UserCommonController, AdminUSerController, HomeUSerController, 在这个过程中,UC 继承 BC,AU 和 HU 继承 UC,实现复用或者共享上一层次的方法,这个过程就是面向对象思想的应用啊。还有封装,把相关联的东西写在同一个类或者同一个文件夹中。多态,就是不同的情况下,不同的形态。比如定义了一个 interface,里面有 toArray 或者 toString 方法,不同的对象,他们的 toArray,toString 方法不同。比如 php 的 print_r 他能打印不同类型的数据,而输出在屏幕的结果都是字符串,说明不同的对象,在 print_r 的时候,都实现了 toString 的功能。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/708820

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX