抛开设计模式,软件设计的微思考
设计模式首先是要解决问题的。
没有问题,就不要去设计什么模式出来。
?
具体问题具体分析。例如,在一个继承层次中追加一些新方法。
该怎么办?
?
问题要提出,不然不要轻易去设计:
?
1.有没有重用性的组件提取出来?
2.有没有可重用的接口?
3.有没有特殊性?
?
经过这么分析之后,发现我新追加的代码除了函数和函数参数之外,实现上几乎没有任何重用的可能性。这个时候该怎么办呢?
第一。既然接口可以重用,那就把这些方法用一个接口来表示。
interface IAXX{
???? fA();
???? gA();
}
第二。实现不可重用,意味着提取出来造成没必要的类的。【这就是传说中的类爆炸?】
所以必须这样弄:
?
interface IABXX extends IAXX, IBXX{
???? fA();
???? gA()
???? fB()
?? ? gB();?
}
?
第三。在客户端,如果是IBXX类型的对象mB。那么判断一下mB是否也实现了接口IABXX ,如果实现了。
则调用
???? fA();
???? gA()
这俩函数。?
?
?