(三)简单工厂模式详解 (四)

2014-11-24 10:41:11 · 作者: · 浏览: 2
actory {

private ServletFactory(){}
//典型的创造产品的方法,一般是静态的,因为工厂不需要有状态。
public static Servlet createServlet(String servletName){
if (servletName.equals("login")) {
return new LoginServlet();
}else if (servletName.equals("register")) {
return new RegisterServlet();
}else if (servletName.equals("loginout")) {
return new LoginoutServlet();
}else {
throw new RuntimeException();
}
}
}

//相当于简单工厂模式中的产品接口
interface Servlet{}
//相当于简单工厂模式中的抽象父类产品。
//注意,简单工厂在网络上的资料大部分为了简单容易理解都是只规划了一个产品接口,但这不代表就只能有一个,设计模式的使用要灵活多变。
class HttpServlet implements Servlet{}
//具体的产品
class LoginServlet extends HttpServlet{}
class RegisterServlet extends HttpServlet{}
class LoginoutServlet extends HttpServlet{}
//产品工厂
public class ServletFactory {

private ServletFactory(){}
//典型的创造产品的方法,一般是静态的,因为工厂不需要有状态。
public static Servlet createServlet(String servletName){
if (servletName.equals("login")) {
return new LoginServlet();
}else if (servletName.equals("register")) {
return new RegisterServlet();
}else if (servletName.equals("loginout")) {
return new LoginoutServlet();
}else {
throw new RuntimeException();
}
}
}
其实我们对这一部分逻辑的控制依旧有很多很多的优化余地,但是限于本章介绍的内容,所以我们暂时走到这里,上面所说的很多问题也都是为了介绍之后的模式抛砖引玉,因为我觉得想简单工厂这种没有什么技术上的难度,纯粹是依照业务场景而出现的设计模式,LZ就必须要创造出一个比较真实的业务场景,才能更好的诠释。所以或许会将很多设计模式穿插在这个web项目当中。

好了,本期的简单工厂模式就到这里吧,简单工厂很简单!