面向切面编程(转)

面向切面编程(AOP是Aspect Oriented Program的首字母缩写) ,我们知道,面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配。实际上也就是说,让不同的类设计不同的方法。这样代码就分散到一个个的类中去了。这样做的好处是降低了代码的复杂程度,使类可重用。 
      但是人们也发现,在分散代码的同时,也增加了代码的重复性。什么意思呢?比如说,我们在两个类中,可能都需要在每个方法中做日志。按面向对象的设计方法,我们就必须在两个类的方法中都加入日志的内容。也许他们是完全相同的,但就是因为面向对象的设计让类与类之间无法联系,而不能将这些重复的代码统一起来。 
也许有人会说,那好办啊,我们可以将这段代码写在一个独立的类独立的方法里,然后再在这两个类中调用。但是,这样一来,这两个类跟我们上面提到的独立的类就有耦合了,它的改变会影响这两个类。那么,有没有什么办法,能让我们在需要的时候,随意地加入代码呢?这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。 
      一般而言,我们管切入到指定类指定方法的代码片段称为切面,而切入到哪些类、哪些方法则叫切入点。有了AOP,我们就可以把几个类共有的代码,抽取到一个切片中,等到需要时再切入对象中去,从而改变其原有的行为。 
这样看来,AOP其实只是OOP的补充而已。OOP从横向上区分出一个个的类来,而AOP则从纵向上向对象中加入特定的代码。有了AOP,OOP变得立体了。如果加上时间维度,AOP使OOP由原来的二维变为三维了,由平面变成立体了。从技术上来说,AOP基本上是通过代理机制实现的。 
     AOP在编程历史上可以说是里程碑式的,对OOP编程是一种十分有益的补充。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hi3520d uImage制作 uboot制作 rootfs制作

首次安装SDK 1、hi3520D SDK包位置 在"hi3520D_V100R001***/01.software/board"目录下,您可以看到一个 hi3520D_SDK_Vx.x.x.x.tgz 的文件, 该文件就是hi3520D的软件开发包。 2、解压缩SDK包 在linux服务器上(或者一台装有…

[LeetCode Online Judge]系列-求二维平面内在一条直线上的最大点数

2019独角兽企业重金招聘Python工程师标准>>> Max Points on a Line Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. 题目是:在2D平面内给N个点,求最多多少个点在一个直线上. 以下是AC的解决方式: /*** Defi…

Hi3520D UART2和UART3是如何加载到内核的

Hi3520D的UART驱动位于linux-3.0.y/drivers/tty/serial/amba-pl011.c 添加UART2和UART3需要修改的文件为:linux-3.0.y/arch/arm/mach-hi3520d/core.c和linux-3.0.y/arch/arm/mach-hi3520d/include/mach/irqs.h两个文件; 首先修改 core.c文件,…

Linux-C实现GPRS模块发送短信

“GSM模块,是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。GSM模块根据其提供的数据传输速率又可以分为GPRS模块、EDGE模块和纯短信模块。短信模块只支持语…

【思科】GNS3模拟静态NAT/动态NAT

实验拓扑:实验目的:利用NAT技术,使C1,C2能与R2连通。实验步骤:如图配置好IP地址,为C1,C2指定网关192.168.1.1。2.在R1上配置静态NAT.假定为C1配置公网地址12.0.0.3,来实现与R2的连通。这样,静态…

Text模式和PDU模式的区别

发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信…

[家里蹲大学数学杂志]第041期中山大学数计学院 2008 级数学与应用数学专业《泛函分析》期末考试试题 A...

1 ( 10 分 ) 设 $\mathcal{X}$ 是 Banach 空间, $f$ 是 $\mathcal{X}$ 上的线性泛函. 求证: $f\in \mathcal{L}(\mathcal{X})$ 的充分必要条件是 \[ N(f)\{ x\in \mathcal{X};\ f(x)0 \} \] 是 $\mathcal{X}$ 的闭线性子空间. 证明: 必要性. 设 $N(f)\ni x_n\to x$, 则 $$\bex …

PUD编码规则

共有三种方式来发送和接收SMS信息:Block Mode, Text Mode和PDU Mode。其中PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。 发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式…

xml 解析

2019独角兽企业重金招聘Python工程师标准>>> 各大数据接口大全:http://blog.sina.com.cn/s/articlelist_2127818045_10_1.html package com.test.junit; import static org.junit.Assert.*; import java.io.ByteArrayInputStream;import java.io.InputSt…

3.1 采购管理规划

3.1.1 采购业务管理规划 通过企业采购业务管理规划,从而引入完全价值采购体系,建立企业的战略性采购或电子化采购流程,进行合同管理,收货管理和使用,采购结算,降低总体采购成本; 整合企业的采…

能吹是多么的重要

联合利华引进了一条香皂包装生产线,结果发现这条生产线有个缺陷:常常会有盒子里没装入香皂。总不能把空盒子卖给顾客啊,他们只得请了一个学自动化的博士后设计一个方案来分拣空的香皂盒。博士后拉起了一个十几人的科研攻关小组,综…

深入理解Linux守护进程

深入理解Linux守护进程Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的。守护进程是生存期长的…

【翻译】Ext JS 4——Ajax和Rest代理处理服务器端一场和消息的方法

原文:EXTJS4 - Handle Server-side exceptions and message from an Ajax or Rest proxy作者:Raja可能要处理的情况:success(成功)——Ext处理failure(失败),由于通讯问题——Ext处理…

Apache下PHP Loaded Configuration File None 解决方法

解决方法可在apache配置文件中增加 PHPIniDir “The path to your php.ini”, 比如:PHPIniDir "/usr/local/php/etc/php.ini"重启apache。 确保PHPIniDir在loadModule php5_module之前 转载于:https://blog.51cto.com/zrer90/1421464

理解Lucene/Solr的缓存

缓存对于提高搜索引擎的吞吐量,降低CPU占用率极为重要。Lucene/Solr在这块做了很多的工作。Lucene/Solr中默认提供了5种缓存,同时solr还提供扩展缓存接口,允许开发者自定义缓存。1 缓存的基本原理Solr实现了两种策略的缓存:LRU(Le…

深入了解tcmalloc(一):windows环境下无缝拦截技术初探

2019独角兽企业重金招聘Python工程师标准>>> 概述: 又到了一个总结提炼的阶段,这次想具体聊聊游戏引擎中使用的内存管理模块tcmalloc组件的使用心得。项目的前期曾经遇到过内存瓶颈,特别是windows系统下的客户端程序在经历长时间运…

删除数据库日志文件的方法

原文:删除数据库日志文件的方法你曾经有在执行SQL的时候,数据库报事务日志已满,然后执行报错。然后纠结于怎么删除数据库日志,捣鼓半天吗,现在就提供两种删除日志文件的方法,希望能够帮到你! 阅读目录 方法…

数据结构课程设计

20. 公交线路上优化路径的查询 问题描写叙述 最短路径问题是图论中的一个经典问题,当中的Dijkstra算法一直被觉得是图论中的好算法,但有的时候须要适当的调整Dijkstra算法才干完毕多种不同的优化路径的查询。 对于某城市的公交线路,乘坐公…

Android屏幕大小适配问题解决

一、一些基本概念 1、长度(真实长度):英寸、inch 2、分辨率:density 每英寸像素数 dpi(密度) 3、像素:px 4、dip的公式:px /dipdpi/160 所以 dip 类似于英寸、长度&am…

开源 免费 java CMS - FreeCMS1.9 会员组管理

2019独角兽企业重金招聘Python工程师标准>>> 项目地址:http://www.freeteam.cn/ 会员组管理 会员组分为两种,一级是经验会员组,一种是特殊会员组。 经验会员组的会员会根据经验自动变更,特殊会员组不会自动变更&…