- 論壇徽章:
- 2
|
回復 6# fanhed
你說到重點了。 維護(演變)時, 究竟是替換還是增加?
就以lz的例子來說, 演變的過程中:
1. 是否有可能會有另外的 session-like 與現(xiàn)有的Session同時存在?
如果只有一種 session , 改變的是這一種 session 的實現(xiàn)方式, 那就沒必要。
2. 是否有代碼需要以相同的方式操作這些不同的 session ?
即使存在多種 session , 如果沒有代碼需要以相同的方式操作它們, 也沒有必要用 ISession。
f 用 sessionA, g 用 sessionB , 關 ISession 什么事?
只有兩者都為真是, 才有必要一開始就設計 ISession, 讓 f,g 用 ISession。
f,g 的代碼就可以被以后產生的新的 SessionA, SessionB 復用。
即使一開始沒有預見到這種需求, 以后改也不是不可能:
class Session { ... };
f(Session& s);
g(Session& s);
可改為:
class ISession;
class Session { ISession* s_; };
class SessionA : public ISession { ... };
class SessionB : public ISession { ... };
對那種二話不說, 直接 ISession 開搞的人…… 無語…… |
|