我最近遇到一些意见,说不应该总是使用面向对象的设计/编程.
您是否知道一些不会受益且不应使用面向对象设计的用例?
例如:有一些问题(担忧)将受益于AOP.
使用其他范例(如函数编程)可以最好地表达一些问题.此外,声明性范例允许更加强大的关于代码正确性的形式推理.请参阅Erlang,以获得具有某些优势的语言的良好示例,由于范例的基本特性,这些优势无法与OO语言真正匹配.
其他语言范例更适合的问题域的示例是数据库查询(SQL),专家系统(Prolog,CLIPS等)或统计计算(R).
根据我的经验,其中一个不受OO设计影响的地方是低端嵌入式系统.执行OO需要一定的开销,有时候你无法负担这笔费用.在标准PC中,开销非常小,甚至不值得考虑,但在低端嵌入式系统中,开销可能很大.
横向关注点受益于面向方面编程(AOP).通过横切,我的意思是可以使应用程序的各个部分受益并且实际上不属于特定对象的功能.记录通常作为示例给出.安全可能是另一个.例如,为什么Person对象应该知道有关日志记录或应该允许谁访问它的任何内容?
一个很容易想到的......数据库-y web应用程序.
在这种情况下,遵循一个被接受的框架更有意义..而不是找出一个漂亮的OOP设计.例如,如果你必须使用JOIN和ORDER BYs进行某种复杂的查询.SQL将踢对象.
根据问题选择解决方案......而不是解决问题直到它适合解决方案.