Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >OOP解决了什么样的问题?

OOP解决了什么样的问题?
EN

Stack Overflow用户
提问于 2017-01-20 15:36:46
回答 2查看 51关注 0票数 0

我熟悉这个术语:关注点的分离。这基本上是在提倡代码中的模块化。

然而,当我读到AOP的时候,它明确地说,它允许您将交叉关注点分开。

所以我的问题是,如果AOP将横切的关注点分开,那么OOP分离出哪种关注点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-21 02:02:41

OOP将现实世界中的场景中的关注点分离开来,即将彼此与直接关联耦合在一起。

例如,一家公司有许多雇员,雇员有工资。

AOP的关注点不是直接关联,而是更多地像哨兵一样,超越对象到对象关系。

AOP的一个典型示例场景是日志记录。日志记录仍然由一个名为Logger的对象表示,但实际上,日志记录操作就像一个观察者,它过滤掉正常的流,并提取在幕后拦截流的信息。

虽然可以在不使用AOP的情况下实现日志记录,但实际上,您最终会使用与给定操作的目的无关的内容(例如:注册用户与日志记录无关)。

因此,您应该理解AOP强制执行并改进了关注点的良好分离,甚至将一些需求从您的视线中去掉,从而使代码更简单。

票数 2
EN

Stack Overflow用户

发布于 2017-01-21 02:17:00

简单的回答是: OOP分离抽象级别。设计良好的OOP代码将在整个模块中使用一组一致的抽象。

答案很长: OOP是建立在四个“支柱”之上的:

  • 数据抽象
  • 封装
  • 继承
  • 多态

这使得程序员可以轻松地构建抽象层,每个层次都使用较低的抽象来提供更高的抽象。

例如,您可以从帧、消息、路由和会话(抽象)构建TCP/IP堆栈。当使用会话时,您不需要知道框架是如何被排斥的,以及冲突检测(封装)。此外,您可以在不知道是否使用IP4或IP6 (多态性)的情况下发送消息。所有级别都可以通过继承等方式使用相同的CRC检查。因此,这四个支柱一起提供了一种编程方法,可以创建非常干净的抽象级别。但是很多时候,OOP软件变得一团糟,抽象级别没有被清晰地分开。

AOP是OOP的补充。OOP专注于抽象级别和结构,AOP专注于与“关注点”相关的行为。它们是看待代码的正交方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41774070

复制
相关文章
android attrs获取_关于Android attrs 自定义属性的说明
写个自定义控件时经常要自定义一些自己的属性,平时用的都是那几个,今天就顺便一起总结一下这个东东吧~
全栈程序员站长
2022/11/02
1K0
python attrs_Python attrs作用是什么?
class CommentSerializer(serializers.Serializer):
全栈程序员站长
2022/11/02
3970
android中怎么在View构造的attrs中拿到android给的属性以及attrs属性介绍[通俗易懂]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/02
1.3K0
android 参数 attrs.xml,android – 定义自定义attrs
传统的方法充满了样板代码和笨拙的资源处理。 这就是我制作Spyglass框架的原因。 为了演示它是如何工作的,这里有一个示例,展示如何创建一个显示字符串标题的自定义视图。
全栈程序员站长
2022/09/27
5450
Unable to find chromedriver...AttributeError: ‘NoneType‘ object has no attribute ‘get‘
Unable to find chromedriver…AttributeError: ‘NoneType’ object has no attribute ‘get’
谙忆
2021/01/19
7910
android 自定义控件 attrs,android 使用attrs自定义控件
1、在values下新建一个attrs.xml的资源文件(my_attrs.xml)
全栈程序员站长
2022/11/02
8440
vue $attrs的使用
在上面提过,如果给子组件传递的数据,子组件不使用props接收,那么这些数据将作为子组件的特性,这些特性绑定在组件的HTML根元素上,在vue2.40版本之后,可以通过inheritAttrs = false 来控制这些特性是否显示在dom元素上 如:案例中父组件给子组件传递的row和isShow,子组件没有使用props接收,这个2个数据直接作为HTML的特殊属性。子组件使用inheritAttrs = true,那么特性显示在dom上,如果设置为false,那么特性不显示在dom上
全栈程序员站长
2022/11/02
1.4K0
vue $attrs的使用
vue组件通讯之$attrs
我们会遇到这样的场景,比如对element-ui的el-table组件进行二次开发,但是el-table组件有很多属性比如控制高度的height,传入数据的data还有border、size、fit等一个个的去传显然不大现实,这个使用用$attrs处理起来就会特别优雅。
全栈程序员站长
2022/11/02
3850
python attrs_一直比较疑惑python中关于attrs的问题
links = getLinks(“/wiki/Python_(programming_language)”)
全栈程序员站长
2022/11/02
4290
Vue - 组件通信之$attrs、$listeners
vue通信手段有很多种,props/emit、vuex、event bus、provide/inject 等。还有一种通信方式,那就是 $attrs 和 $listeners,之前早就听说这两个api,趁着有空来补补。这种方式挺优雅,使用起来也不赖。下面例子都会通过父、子、孙子,三者的关系来说明使用方式。
WahFung
2020/08/22
1K0
AttributeError: NoneType object has no attribute‘’
AttributeError: ‘NoneType’ object has no attribute ‘text’
狼啸风云
2020/10/09
3.5K0
vue的$attrs_vue获取list集合中的对象
原文网址:Vue–attrs, listeners–使用/教程/实例_IT利刃出鞘的博客-CSDN博客
全栈程序员站长
2022/09/27
5.2K0
Python爬虫之携程网笔记一
前两天看了许久BeautifulSoap,想找个网站挑战一下,刚好想到之前曾经爬过携程网,想爬一下酒店信息试一下,没想到刚尝试就碰到了钉子。
python与大数据分析
2022/03/11
4630
AttributeError: 'NoneType' object has no attribute 'append'
附加列表元素时发生的错误,去掉赋值,把第四十行改为re_bb_area.append(proportion)
狼啸风云
2019/05/15
2.7K0
AttributeError: 'NoneType' object has no attribute 'append'
Vue 新增的$attrs与$listeners的详解
inheritAttrs:默认值true,继承所有的父组件属性(除props的特定绑定)作为普通的HTML特性应用在子组件的根元素上,如果你不希望组件的根元素继承特性设置inheritAttrs: false,但是class属性会继承(简单的说,inheritAttrs:true 继承除props之外的所有属性;inheritAttrs:false 只继承class属性)
tianyawhl
2019/04/04
2.7K0
Vue中 $attrs、$listeners 详解及使用
传送门:Vue中 子组件向父组件传值 及 .sync 修饰符 详解 传送门:Vue中 状态管理器(vuex)详解及应用场景 传送门:Vue中 事件总线(eventBus)详解及使用 传送门:Vue中 provide、inject 详解及使用
全栈程序员站长
2022/11/02
1.6K0
Python3网络爬虫(七):使用Beautiful Soup爬取小说
本文总结了一些常见的网络爬虫和反爬虫技术,并介绍了一种基于Python的爬虫程序。该爬虫程序可以爬取指定网站的文章内容,并支持对某些网站的反爬虫策略。同时,还介绍了一种基于Web的爬虫程序,该程序可以爬取网站的文章列表,并支持对某些网站的反爬虫策略。
Jack_Cui
2018/01/08
4.5K0
Python3网络爬虫(七):使用Beautiful Soup爬取小说
在 Vue 中,使用 $attrs 构建高级组件
这节课,我们来看下 Vue3 中的 $attrs 属性。首先,我们会介绍它的用途以及它的实现与 Vue2 有哪些不两同点,并通过事例来加深对它的理解。
前端小智@大迁世界
2022/10/27
2.5K0
在 Vue 中,使用 $attrs 构建高级组件
Vue中的$attrs和$listener的使用
疫情之前,在家关了这么久,也没怎么更新,最近在看大佬的项目,学习下新的思路。之前项目上,父子组件传递数据,都是用props去接收和this.emit触发父组件方法。这次我们用attrs和
青年码农
2022/05/31
1.2K0
Vue中的$attrs和$listener的使用
每天一道 python 面试题 - Python中的元类(metaclass)
虽然在Python中您可以对元类使用任意可调用对象(例如Jerub演示),但是更好的方法是使其成为实际的类。type是Python中常见的元类。type它本身是一个类,并且是它自己的类型。您将无法type纯粹使用Python 重新创建类似的东西,但是Python有点作弊。要在Python中创建自己的元类,您实际上只想将其子类化type。
公众号---人生代码
2020/05/16
9420

相似问题

AspectJ、Spring AOP和JBoss AOP在异常处理方面的比较

11

我们可以将AOP方面应用于多个maven项目吗?

12

AOP +同步

12

Python中面向方面编程(AOP)

24

spring中的AOP方面警告

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文