你好,banq,请教一个问题

你好,看了你的GOF设计模式的状态模式后,我欲实现:
我的类有:
public class DbBaseOper { //DB基本操作类
   public ResutlSet query(String sql) {
...........
}
}
public class UiManager {
private DbBaseOper db;
public UiManager() {
db = new DbBaseOper();
}
public List queryUi(String sql) {
.....
if(db != null) { //1
rs = db.query(sql);
} else {
db = new DbBaseOper();
rs = db.query(sql);//2
}
}
}
我想将上面1到2的代码用状态模式替换,请问怎么写,我想了半天,没有想出来?

你好,BANQ,这有什么场景呀,一共两个类:DbBaseOper是DB基本操作类,UiManager是管理UI用的,其中需要操作DB,而我调用DbBaseOper来作为最基本的DB的操作,我在UiManager中对DbBaseOper是否被实例化作了判断,是用IF ELSE作的的判断,我就是想把这个IF ELSE用状态模式来替换,请问怎么写?谢谢

>我就是想把这个IF ELSE用状态模式来替换,请问怎么写?
状态模式是设计模式,用设计模式需要场景,这是基础知识,你没有告诉我为什么在这里用if else,所以,我也无法帮你把它转为状态模式。

给我一个这里使用if else的理由先?

你好,banq,春节快乐!这里使用IF ELSE的原因是,我怕db变量可能为空,所以使用IF ELSE

>我怕db变量可能为空,所以使用IF ELSE
担心变量为空是一个语言语法检验,不属于业务逻辑,所以没有必要使用设计模式,如果你一定要使用,属于过度设计。

我们需要区分语言语法和设计是两个层次的事情,而且对于初学者只有多做一些项目才能把握这两者的区别。