作者回复: 是否要使用各种设计模式设计一个非常灵活的程序,主要是看你的需求场景,而不是看项目的阶段。
如果你的场景就是需要这么灵活,就是要各种复用,应对各种变更,那么你一开始就应该这样设计。
如果你的场景根本不需要一个可复用的button,那么就不需要这样设计。
关键还是看场景。
但是场景也会变化,一开始不需要复用,但是后来又需要复用了,那么在在需要复用的第一个场景,就重构代码,而不是等将来维护困难局面hold不住了再重构。
ps 如果你习惯了这种灵活的设计,你会觉得这种设计并不复杂。对于软件开发而言,复杂的永远是业务逻辑,而不是设计模式。设计模式是可重复的,可重复的东西即使看起来复杂,熟悉了就会觉得很简单。
pps 看起来复杂的设计模式就是用来解决维护困难问题的,正确使用设计模式,看起来复杂了,其实维护简单了,因为关系和边界更清晰了,你不需要在一堆强耦合的代码里搅来搅去。真正维护成本高的其实是你所谓的简单的设计,牵一发动全身,稍不注意就是各种bug。
ppps 重要的话再说一次:
关键还是看场景。
没有银弹,没有一种必然就是好的设计方案,能理解场景的才是真·高手。
作者回复: 当你准备写第一个else的时候,就说明你的代码即将陷入僵化、牢固和脆弱,而且为将来的需求变更引入了一个糟糕的“设计模式”。
如果其他人接手你的代码,他有两个选择,要么继续写更多的else以应对需求变更;要么心理暗骂一声然后重构你的代码。你希望他选择哪个?
作者回复: starButton = new Button();
starButton.addListener(
new ButtonListener() {
public void buttonPressed() {
dialer.enterDigit(STAR);
}
}
);
作者回复: 👍
作者回复: 不同button按下调用不同的adapter,参考文中代码。
作者回复: Adapter不需要判断,请看思考题
作者回复: 组件就是jar,dll这些。子系统和系统就是可运行的完整程序,一个或者多个war。
不管是什么架构图,只要你觉得有助于你描述你的架构设计,都可以加入设计文档中。