信息领域热词分析
2020.4.1
1 可修改性理解
可修改性理解可理解为:指系统或软件的能够快速地以较高的性价比对系统进行变更的能力。比如说:对于一个网站,我们要修改它某一板块的UI界面,当我们对界面进行修改时是否会引起对另一个UI模块的影响,是否会引起后台控制,业务逻辑代码的变更,是否会引起整个网站的崩溃,这体现了一个网站的整个架构的是否具备可修改性。
包含两个方面:
1、用户需求,2、系统内在需求。
首先在这阐述下“需求,成本,修改”三者的关系:需求无处不在,时时刻刻产生,判别一个需求的重要性来自于它对系统的成本产生的影响,如果严重影响了系统带来的收益,那必须对系统进行修改,如果某一部分相对于系统收益来说微不足道,甚至不会影响系统的收益,那改不改都“无可厚非”,而且有可能你对这部分修改了还会引起系统的故障。
1)局部化意味着实现“模块化”:(单一职责)
function Product(id, description) { /** * 获取商品ID * * @return {int } 商品id */ this.getId = function() { return id; };
/** * 获取商品描述 * * @return {string} 商品描述 */ this.getDescription = function() { return description; } } |
2)接口隔离原则
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
interface I { public void method1(); public void method2(); public void method3(); public void method4(); public void method5(); }
class A{ public void depend1(I i){ i.method1(); } public void depend2(I i){ i.method2(); } public void depend3(I i){ i.method3(); } }
class B implements I{ public void method1() { System.out.println("类B实现接口I的方法1"); } public void method2() { System.out.println("类B实现接口I的方法2"); } public void method3() { System.out.println("类B实现接口I的方法3"); } //对于类B来说,method4和method5不是必需的,但是由于接口A中有这两个方法, //所以在实现过程中即使这两个方法的方法体为空,也要将这两个没有作用的方法进行实现。 public void method4() {} public void method5() {} }
class C{ public void depend1(I i){ i.method1(); } public void depend2(I i){ i.method4(); } public void depend3(I i){ i.method5(); } }
class D implements I{ public void method1() { System.out.println("类D实现接口I的方法1"); } //对于类D来说,method2和method3不是必需的,但是由于接口A中有这两个方法, //所以在实现过程中即使这两个方法的方法体为空,也要将这两个没有作用的方法进行实现。 public void method2() {} public void method3() {}
public void method4() { System.out.println("类D实现接口I的方法4"); } public void method5() { System.out.println("类D实现接口I的方法5"); } } public class Client{ public static void main(String[] args){ A a = new A(); a.depend1(new B()); a.depend2(new B()); a.depend3(new B());
C c = new C(); c.depend1(new D()); c.depend2(new D()); c.depend3(new D()); } } |
3)降低模块之间的依赖性是防止连锁反应的必要条件。可据“迪米特法则”来实现。