- 论坛徽章:
- 2
|
回复 6# fanhed
你说到重点了。 维护(演变)时, 究竟是替换还是增加?
就以lz的例子来说, 演变的过程中:
1. 是否有可能会有另外的 session-like 与现有的Session同时存在?
如果只有一种 session , 改变的是这一种 session 的实现方式, 那就没必要。
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 开搞的人…… 无语…… |
|