loupi loupi [
http://community.jboss.org/people/hsma] created the discussion
"Re: The reuse&&JBoss AOP"
To view the discussion, visit:
http://community.jboss.org/message/584755#584755
--------------------------------------------------------------
Hello,
Thank you for your reply, The example that I want to realise is the following(Realization
of the observer design pattern with JBossAOP):
Flower (Subject ):
*package* Bee;
*public* *class* Flower {
*private* *boolean* isOpen;
*public* *boolean* isOpen(){*returnthis*.isOpen;}
*public* Flower(){
*this*.isOpen=*false*;
}
*public* *void* open(){
*this*.isOpen=*true*;
}
*public* *void* close(){
*this*.isOpen=*false*;
}
}
The Bee class observe the opening and closing of Flower (attribute(isOpen))
**
*PS: for easier reuse of the Bee class, we put the Update method (observer role)in another
class and we make an introduction*
Bee (Observer ):
*package* Bee;
*public* *class* Bee {
*private* String name;
*public* Bee(String name){
*this*.name = name;
}
*public* *void* dinner(){
System.+out+.println("Bee "+ name
+ "'s breakfast time!");
}
*public* *void* rest(){
System.+out+.println("Bee" + name
+ "'s bed time!");
}
}
The interface for all observers is the following:
*package* Bee ;
*public* *interface*FlowerObserver {
*public* *void* update();
}
And Mixin class is as follows:
*package* Bee;
*public* *class* BeeObserver *implements* FlowerObserver{
Bee bee;
*public* BeeObserver(Bee bee){*this*.bee=bee;}
*public void* update(){
*if* (isOpen) //the attribute value of Flower
bee.dinner();
*else* bee.rest();
}}
Finally the Main class:
*package* Bee;
*public* *class* Main {
*public* *static* *void*main(String[] args) {
Flower f = *new* Flower();
Beeb1 = *new* Bee("B1");
Beeb2 = *new* Bee("B2");
f.open();
f.close();
f.open();
System.+out+.println("c'estbon");
}
}
theXML file:
<?xmlversion="1.0" encoding="UTF-8"?>
<aop>
<introductionclass="Bee.Bee">
<mixin>
<interfaces>Bee.FlowerObserver</interfaces>
<class>Bee.BeeObserver</class>
<construction>new Bee.BeeObserver(this)</construction>
</mixin>
</introduction>
<aspect class="Bee.BeeObserver"/>
<bind pointcut="set(private boolean Bee.Flower->isOpen)">
<after aspect="Bee.BeeObserver" name="update"/>
</bind>
</aop>
This code contains several errors!! but I would have the following result:
*B1 Bee's breakfast time! B2 Bee's breakfast time! B1 Bee's bed time! B2
Bee's bed time! B1 Bee's breakfast time! B2 Bee's breakfast time!*
*Tahnk's in advance :)
*
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/584755#584755]
Start a new discussion in JBoss AOP at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]