设计良好的代码允许更多的功能在必要时可以被插入到适当的位置中。这样做的目的的是为了应对未来可能需要进行的修改,而造成代码被过度工程化地开发。
可扩展性可以通过软件框架来实现:动态加载的插件、顶端有抽象接口的认真设计的类层次结构、有用的回调函数构造以及功能很有逻辑并且可塑性很强的代码结构。
可扩展性是软件设计的原则之一,它以添加新功能或修改完善现有功能来考虑软件的未来成长。可扩展性是软件拓展系统的能力。
简单地说,可扩展性就是关于如何处理更大规模的业务。比如,Web应用程序就是允许更多的人使用你的服务。如果你不能弄清楚如何提高性能的同时向外扩展,没关系。只要你能处理更大规模的用户,即使是存在多个单点故障也没有问题。组合的可扩展性要求要满足用户不断发展的要求,还要满足因技术发展需要而实现的扩展和升级的需求。
个人认为将当前情况下,行为分配给农场主既有利于可扩展又有利于维护性。从语义上分析:
挤奶是行为,本例中只有农场主具有该行为,奶牛语义上不应该具备该行为,奶牛只能返回相关属性,让农场主判定是否能够挤奶,挤奶量等等。
无论奶牛如何扩展、甚至农场主扩展,都可以依赖抽象(当然不考虑双分发问题),具备较高的扩展性。
同时维护点少,如果分配给奶牛,那么如果奶牛的挤奶行为出现差错,则可能需要从顶层至底层修改奶牛的行为。而分配给农场主,则出错仅需在挤奶这个行为范围内进行修改。
题外话:当然复杂情况下,维护性不好判断,也就是说,前提是如果系统扩展至一定层次,那么农场主挤奶行为可能会十分复杂,那么它的维护性远远低于分配给奶牛。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)