简单的工厂模式
简单的工厂模式为定义一个用于创建对象的接口,让子类决定实例化哪个类。简单工厂模式又称为静态方法工厂模式
优点:
- 代码解耦,创建实例的工作与使用实例的工作分开,使用者不必关心类对象如何创建。
- 不必管这些对象到底怎样创建及怎样组织的.明白了各自的职责和权利,有利于整个软件体系结构的优化。
缺点:
- 修改麻烦,动一则牵动全身,假设需要新添加类,则需要修改工厂类。
- 加入产品类时,需要修改的内部逻辑多。
代码显示:
//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
适用场景:
- 消费者不关心它所要创建对象的类(产品类)的时候。
- 消费者知道它所要创建对象的类(产品类),但不关心如何创建的时候。
- 生成复杂对象时,确定只有一个工厂类,可以使用简单工厂模式。否则有多个工厂类的话,使用工厂方法模式