⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 observerbillingpolicy.aj

📁 designpatterns for aop
💻 AJ
字号:
package designpatterns.observer.aspectj;import ca.ubc.cs.spl.aspectPatterns.patternLibrary.*;public aspect ObserverBillingPolicy extends ObserverProtocol {	declare parents : Playable extends Subject;		declare parents : BillingService implements Observer;	pointcut titleUse(Playable playable) :		this(playable)		&& ( 		execution(public void Playable+.play()) ||		execution(public void Song.showLyrics())		);			pointcut topLevelTitleUse(Playable playable) :		titleUse(playable) && ! cflowbelow(titleUse(Playable));	public pointcut subjectChange(Subject subject) : 		topLevelTitleUse(Playable) && this(subject);		public void updateObserver(Subject s, Observer o){		BillingService service = (BillingService)o;		service.generateChargeFor((Playable)s);	}		//could be injected by a dependency injection	//framework like Spring	private BillingService defaultBillingService =		new BillingService();		pointcut playableCreation(Subject s) :		execution(public Playable+.new(..))		&& this(s);		after(Subject s) returning : playableCreation(s){		//could also look up service specific to user		//or pull service from some environment		addObserver(s, defaultBillingService);	}		//Similarly, the observing relationship could stop	//based on the occurence of some join point	pointcut stopObserving(Subject s);		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -