架构设计之六个复杂度来源 (4)

对于架构师来说,如何把握预测的程度和提升预测结果的准确性,是一件很复杂的事情,而且没有通用的标准可以简单套用,更多的是靠自己的经验、直觉,所以架构评审时,经常会出现两个设计师对某个判断争的面红耳赤的情况,原因在于没有明确标准,不同的人理解和判断有偏差,而最终又只能选择一个判断。

 

关于(2),为了应对变化,通常将变化封装起来。

常见的方案有这么几个?

a.将“变化”封装在一个变化层,将不变封装在一个独立的稳定层;

b.提炼出一个抽象层和一个实现层;

 

关于a,可以用一句话来概括“不同的人办理不同的事情”,比如在社会生活中有形形色色的人,有的人善于阿谀奉承,有的人踏踏实实,阿谀奉承的人总有一天会因为某些事情而做了嫁衣,而踏踏实实的人却不受到半点影响,这个社会需要实干家。在写代码中可以反映出,一个函数只办一件事情,变化层应对那些时常变化的,稳定层就待在它的稳定层,这样也解耦,不会有影响变化层有问题而还要改稳定层,不会因为稳定层有问题而改变化层。

 

关于b,对于抽象层和实现层,对于Java开发很常见,比如接口和实现类就是一个很好的体现。

 

来自李运华先生的思考题:

你在具体代码中使用过哪些可扩展的技术?最终的效果如何?

针对这个问题,我对此的回答是:

可扩展的技术倒没有使用太多,主要是从代码上扩展,比如从简单方面做起,每次Controller都要打印对应的日志,我让AbstractController继承log4j日志,这样每次Controller需要打印日志不用每次在类里面声明一下。还有就是将Controller代码简化,比如之前Controller太过繁杂,以至于业务逻辑全面在Controller里面,其实最好还是在service中将其写清楚,Controller方面能简化则简化。当然了,还有就是统一代码规范,这里我参考了《阿里巴巴的Java开发手册》,同时也自定义一些特定组件。

最终的效果是,代码耦合性降低,代码的可读性提高,可扩展性提高很多。效果虽然没有达到我预想的那样,但是已经进步了不少。这也是一件让人高兴的事情。

 

小结:

这两天由于合作方的需要编写了大量文档,这篇文章预计应该昨天就发表的,但是还没有写完。今天仍然没有写完,因为还有低成本、安全、规模等三个方面还没有讲到,我准备留到下次再讲,我觉得高可用、高性能、可扩展性等三个方面,大家可以仔细读读,多多思考。一定会有你想不到的收获。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppgxg.html