簡單的工廠模式
簡單的工廠模式為定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪個類。簡單工廠模式又稱為靜態(tài)方法工廠模式
優(yōu)點:
- 代碼解耦,創(chuàng)建實例的工作與使用實例的工作分開,使用者不必關心類對象如何創(chuàng)建。
- 不必管這些對象到底怎樣創(chuàng)建及怎樣組織的.明白了各自的職責和權利,有利于整個軟件體系結構的優(yōu)化。
缺點:
- 修改麻煩,動一則牽動全身,假設需要新添加類,則需要修改工廠類。
- 加入產(chǎn)品類時,需要修改的內(nèi)部邏輯多。
代碼顯示:
//Create the event description method
public abstract class Events {
public abstract void decEvents();
}
//Inherit the event description method and write the content of the event
public class ClickEvents extends Events {
@Override
public void decEvents() {
LogHelper.w("This event is a click event");
}
}
public class SearchEvents extends Events {
@Override
public void decEvents() {
LogHelper.w("This event is a search event");
}
}
public class LoginEvents extends Events {
@Override
public void decEvents() {
LogHelper.w("This event is a login event");
}
}
public class SimpleEventsFactory {
public static final int TYPE_CLICK = 1;
public static final int TYPE_SEARCH = 2;
public static final int TYPE_LOGIN = 3;
public static Events createEvents(int type) {
switch (type) {
case TYPE_CLICK:
return new ClickEvents();
case TYPE_SEARCH:
return new SearchEvents();
case TYPE_LOGIN:
return new SearchEvents();
default:
return null;
}
}
}
//Instantiate and output the result
Events events = SimpleEventsFactory.createEvents(SimpleEventsFactory.TYPE_CLICK);
events.decEvents();
輸出結果:
This event is a click event
適用場景:
- 消費者不關心它所要創(chuàng)建對象的類(產(chǎn)品類)的時候。
- 消費者知道它所要創(chuàng)建對象的類(產(chǎn)品類),但不關心如何創(chuàng)建的時候。
- 生成復雜對象時,確定只有一個工廠類,可以使用簡單工廠模式。否則有多個工廠類的話,使用工廠方法模式