, , , , - .
interface Context {
BeanFactory getBeanFactory();
void refresh();
void destroy();
}
interface BeanFactory {
<T> T getBean(String id);
}
interface DestroyableBeanFactory extends BeanFactory {
void destroyBeans();
}
class ContextImpl implements Context {
private DestroyableBeanFactory beanFactory;
public BeanFactory getBeanFactory() {
return beanFactory;
}
@Override
public void destroy() {
beanFactory.destroyBeans();
}
}
: , BeanFactory DestroyableBeanFactory destroyBeans() , :
class ContextImpl implements Context {
private DestroyableBeanFactory beanFactory;
public BeanFactory getBeanFactory() {
return new BeanFactory() {
public <T> T getBean(String id) {
return beanFactory.getBean(id);
}
};
}
...
}
BeanFactory - (, , ). , , .