用一用状态模式

最近在学习状态模式
但是没有找到一个详细的例子
所以就随表找了一段代码来改一改
当然从简易程度上来说 这段代码没有必要改造 我只为练练手
当然也可以说这段代码可能不够典型 我只是为了体会一下
如果有什么地方不够到位 或是没有达到标准的地方还请各位不吝赐教
原代码:
public class TopMenuAction extends DispatchAction {
private IChannelService channelService;
private IUserDao userDao;
public ActionForward menulist(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) {
String uid = (String) request.getSession().getAttribute("uid");
List<ViewAuthChannelForm> channels = null;
List<Channel> admingchannel = null;
List<Menu> menuList = null;
try {
menuList = new ArrayList<Menu>();
if (userDao.isAdministrator(uid)) {
admingchannel= channelService.getChannelByParnetId(uid, "0");
for (Channel c : admingchannel) {
Menu menu = new Menu();
menu.setMenu_id(c.getId());
menu.setMenu_order_num(c.getOrderNum());
if (menu.getMenu_id().equals("1")){
menu.setMenu_url("/gzzd/index.jsp");
}
if(menu.getMenu_id().equals("2")){
menu.setMenu_url("/tztg/index.jsp");
}
if(menu.getMenu_id().equals("3")){
menu.setMenu_url("/gzdt/index.jsp");
}
if(menu.getMenu_id().equals("4")){
menu.setMenu_url("/zhfw/zhfwindex.jsp");
}
if(menu.getMenu_id().equals("5")){
menu.setMenu_url("/zxxx/index.jsp");
}
menu.setChannelName(c.getChannelName());
menuList.add(menu);
}

request.getSession().setAttribute(Consts.MENULIST, menuList);
}
catch (Exception e) {
e.printStackTrace();
}
return mapping.findForward("menu");
}

public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}

public IChannelService getChannelService() {
return channelService;
}

public void setChannelService(IChannelService channelService) {
this.channelService = channelService;
}
}

更改后:
public class HomeURL {
public MenuURLState getURLState(String menuId) throws Exception {
Properties prop = setState();
MenuURLState urlState = (MenuURLState) Class.forName(prop.getProperty(menuId)).newInstance();
return urlState;
}

public Properties setState() throws Exception {
Properties prop = new Properties();
ClassLoader cloader = getClass().getClassLoader();
InputStream is = cloader.getResourceAsStream("a/emp.properties");
prop.load(is);
return prop;
}
}

配置文件
emp.properties
1 = a.GzzdURLState
2 = a.TztgURLState
3 = a.GzdtURLState
4 = a.ZhfwURLState
5 = a.ZxxxURLState

public interface MenuURLState {
public String urlState();
}

public class GzzdURLState implements MenuURLState{
public String urlState() {
return "/gzzd/index.jsp";
}
}

public class TztgURLState implements MenuURLState {
public String urlState() {
return "/tztg/index.jsp";
}
}

public class TopMenuAction extends DispatchAction {
private IChannelService channelService;
private IUserDao userDao;
public ActionForward menulist(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) {
String uid = (String) request.getSession().getAttribute("uid");
List<ViewAuthChannelForm> channels = null;
List<Channel> admingchannel = null;
List<Menu> menuList = null;
try {
menuList = new ArrayList<Menu>();
if (userDao.isAdministrator(uid)) {
admingchannel= channelService.getChannelByParnetId(uid, "0");
for (Channel c : admingchannel) {
Menu menu = new Menu();
menu.setMenu_id(c.getId());
menu.setMenu_order_num(c.getOrderNum());
HomeURL homeURL = new HomeURL();
MenuURLState urlState = homeURL.getURLState(menu.getMenu_id());
Menu.setMenu_url(urlState.urlState());
menu.setMenu_url(menuId);
menu.setChannelName(c.getChannelName());
menuList.add(menu);
}

request.getSession().setAttribute(Consts.MENULIST, menuList);
}
catch (Exception e) {
e.printStackTrace();
}
return mapping.findForward("menu");
}

public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}

public IChannelService getChannelService() {
return channelService;
}

public void setChannelService(IChannelService channelService) {
this.channelService = channelService;
}
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wddsmzx/archive/2009/11/16/4817048.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值