策略模式屬於行為型模式,其中體現了兩個基本物件導向設計的基本原則: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);
}
模板方法: