Boy.java
/*
* Created on 2004-8-14
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.pp;
/**
* @author pp
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public interface Kissable {
public void kiss();
}
Kissable.java
package com.pp;
/**
* @author pp
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class Boy implements Kissable{
public void kiss(){
System.out.println("KISS");
}
}
Girl.java
package com.pp;
import org.picocontainer.Startable;
/**
* @author pp
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class Girl implements Startable{
Kissable kissable ;
public Girl(Kissable kissable){
this.kissable = kissable;
}
public void start(){
kissable.kiss();
}
public void stop(){}
}
Main.java
package com.pp;
import org.picocontainer.MutablePicoContainer;
import org.picocontainer.defaults.DefaultPicoContainer;
/**
* @author pp
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class Main {
public static void main(String[] args) {
MutablePicoContainer pico = new DefaultPicoContainer();
pico.registerComponentImplementation(Boy.class);
pico.registerComponentImplementation(Girl.class);
pico.start();
Girl girl = (Girl)pico.getComponentInstance(Girl.class);
//girl.kissone();
pico.stop();
pico.dispose();
}
}
如果不用pico来管理,则Main函数看起来是这样的
public static void main(String[] args){
Kissable kissable = new Boy();
Girl girl = new Girl(kissable);
girl.start();
}
也就是说你必须自己来维护Boy对象,
如果在Spring则看起来是这样的
<beans>
<bean id=“boy“ class=“com.pp.Boy“/>
<bean id=“girl“ class=“com.pp.Girl“>
<properties name=“kissable“><ref bean=“boy“/></properties>
</bean>
</beans>