java中的策略模式与模板方法

来源:互联网 发布:涂鸦跳跃豪华版java 编辑:程序博客网 时间:2024/05/18 03:51

策略模式属于行为型模式,其中体现了两个基本面向对象设计的基本原则:1,封装;2,接口

1)    许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。

2)    系统中有一些类它们仅行为不同时,可以考虑采用策略模式来进行重构;

3)    系统中存在多重条件选择语句时,可以考虑采用策略模式来重构。

 

优点:

1 多用组合来实现动态的添加行为,而少用继承(继承使得耦合性增加)。
2 面向抽象(接口)编程,而不要具体实现编程。
3 策略模式是把各种可能变化的东西(算法)进行了封装,这样就实现了变化的部分和保持不变的部分分离,进而减低代码的耦合性。

缺点:客户端必须知道所有的策略类,并自行决定使用哪一个策略类,所以必须对每一个算法了解

 

dao类:

    public userInfo findUserName(String name)
    {
        userInfo userInfo=null;
        try
        {
            String sql = "select * from userinfo where uname=?";
            userInfo=(userInfo)super.get(sql, new Object[]{name},new Mapper()
            {
                @Override
                public Object mappingObject(ResultSet rs)
                {
                    try
                    {
                        if(rs.next()){
                            userInfo user = new userInfo();               
                            user.setUname(rs.getString("uname"));
                            user.setUpass(rs.getString("upass"));               
                            return user;
                        }
                    } catch (SQLException ex)
                    {
                        // TODO Auto-generated catch block
                        ex.printStackTrace();
                        return null;
                    }
                    return null;
                }
            });       
            return userInfo;
        } catch (Exception e)
        {
            e.printStackTrace();
            return null;
        }
    }

mapper接口:
public interface Mapper
{
    public Object mappingObject(ResultSet rs);
}


模板方法: