package org.theonefx.wcframework.ioc; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import org.theonefx.wcframework.core.ClassWrapper; import org.theonefx.wcframework.core.exception.BeansException; public interface InstantiationStrategy { Object instantiate(ClassWrapper<?> classWrapper, RootBeanDefinition beanDefinition, String beanName) throws BeansException; Object instantiate(ClassWrapper<?> classWrapper, RootBeanDefinition beanDefinition, String beanName, BeanFactory owner, Constructor<?> ctor, Object[] args) throws BeansException; Object instantiate(ClassWrapper<?> classWrapper, RootBeanDefinition beanDefinition, String beanName, BeanFactory owner, Object factoryBean, Method factoryMethod, Object[] args) throws BeansException; }