設(shè)計(jì)模式
工廠模式生成bean
工廠模式分為靜態(tài)工廠和實(shí)例工廠
靜態(tài)工廠:
#靜態(tài)工廠通過(guò)靜態(tài)方法獲取實(shí)例,實(shí)例為靜態(tài)方法和類初始化一起
<bean id="clientService"
class="examples.ClientService"
factory-method="createInstance"/>
public class ClientService {
private static ClientService clientService = new ClientService();
private ClientService() {}
// 靜態(tài)方法
public static ClientService createInstance() {
return clientService;
}
}
實(shí)例工廠
# 實(shí)例工廠有專門(mén)的工廠類,根據(jù)不同工廠方法獲取不同的實(shí)例類型
# DefaultServiceLocator 為實(shí)例工廠類
<bean id="serviceLocator" class="examples.DefaultServiceLocator">
<!-- inject any dependencies required by this locator bean -->
</bean>
<bean id="clientService"
factory-bean="serviceLocator"
factory-method="createClientServiceInstance"/>
<bean id="accountService"
factory-bean="serviceLocator"
factory-method="createAccountServiceInstance"/>
public class DefaultServiceLocator {
private static ClientService clientService = new ClientServiceImpl();
private static AccountService accountService = new AccountServiceImpl();
public ClientService createClientServiceInstance() {
return clientService;
}
public AccountService createAccountServiceInstance() {
return accountService;
}
}