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

    信息领域热词分析

    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来说,method4method5不是必需的,但是由于接口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来说,method2method3不是必需的,但是由于接口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)降低模块之间的依赖性是防止连锁反应的必要条件。可据“迪米特法则”来实现。

  • 相关阅读:
    C# 中的委托和事件
    Sql Server 中一个非常强大的日期格式化函数
    SQL中合并多行记录的方法总汇
    浏览器Quirksmode(怪异模式)与标准模式
    常用的Mysql数据库操作语句大全
    mysql sql语句大全
    MySQL 最基本的SQL语法/语句
    仿微信聊天面板制作 javascript
    $.ajax()方法详解
    正则表达式匹配电话号码和手机号码
  • 原文地址:https://www.cnblogs.com/daisy99lijing/p/13121528.html
Copyright © 2011-2022 走看看