spring AOP (1)

aop到底是什么东西呢?和oop有什么关系呢,可以取代oop吗?

oop是面向对象编程,你可以简单的认为:世界万物都是一个对象,你编写的代码只不过是对这些对象属性以及它动作的描述。

java的思想,其中一个特性是继承。就是把子类相同的动作或者属性抽出到父类,子类可以沿用父类的属性或者方法,也可以重写父类的方法。这样可以避免代码重复。

这里你可以思考下重写和重载的区别,温故而知新。(重载只一个类来说的,重写是对父类和子类来说的)

但是仅仅用继承有时候还达不到要求。

比如下面的例子,只是一个示例而已。

UserService

package spring3.aop.aop1;

public class UserService {

	private Transaction transaction;
	
	public void delUser() {
		transaction.openTran();
		System.out.println("UserService delUser!");
		transaction.commitTran();
	}
	
	public void updUser() {
		transaction.openTran();
		System.out.println("UserService updUser!");
		transaction.commitTran();
	}
}

 上面代码中,删除或者更新用户时,都要打开和关闭事务,首先关于事务的代码抽出到了一个Transaction类中了,这样做已经优化了代码结构。

Transaction

package spring3.aop.aop1;

public class Transaction {

	public void openTran() {
		System.out.println(" Open Transaction! ");
	}
	
	public void commitTran() {
		System.out.println(" Commit Transaction! ");
	}
}

 但是,UserService中还是有代码重复,主要的是,这部分代码并不是UserService需要关心的事,那我们怎么办呢。这个时候就需要aop了。

这就是为什么只用oop不行,需要用aop来辅助。

并且aop和oop并不是谁能取代谁的关系,而是它们需要相互协作,相辅相成的来优化我们的代码。

(未完待续...)

猜你喜欢

转载自xieyan30.iteye.com/blog/1842875