zoukankan      html  css  js  c++  java
  • 信息领域热词分析

    可修改性理解

    可修改性理解可理解为:指系统或软件的能够快速地以较高的性价比对系统进行变更的能力。比如说:对于一个网站,我们要修改它某一板块的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)接口隔离原则

    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)降低模块之间的依赖性是防止连锁反应的必要条件。可据“迪米特法则”来实现。

  • 相关阅读:
    虽然非常简单但是效果不错
    Google地图开发总结
    笔记(一):ES6所改良的javascript“缺陷”
    ex6的选择器
    android中的style部分属性值介绍
    Android ImageSwitcher
    c# Winform退出程序的方法
    Android ImageView获取网络图片
    循环向数据库(sql server)插入10W条数据
    Android Handler+Thread实现更新Ui
  • 原文地址:https://www.cnblogs.com/muailiulan/p/13101031.html
Copyright © 2011-2022 走看看