• 框架设计:侵入性与非侵入性


    软件设计与开发中经常会有一个【侵入性】的概念,对整体框架影响重大。

    1.软件设计的标准是【高内聚,低耦合】。侵入性强实际上指的就是耦合太强了。判断的标准就是当引入了这个组件导致其它代码或者设计要做相应的更改以适应新组件。这样的情况我们就认为这个新组件具有侵入性。

    2.侵入性具体表现为用户代码需要继承框架提供的类。 非侵入性则不需要用户代码引入框架代码的信息,从类的编写者角度来看,察觉不到框架的存在。

    3.开发程序的同时,引进的框架。如果在使用该框架时,要继承框架提供的实体类或实现框架提供的接口,这就说明该框架是侵入性框架,因为程序本身对框架有了依赖,当去除框架时,程序也就无法运行,这个也就是我们说的重量级框架,如struts1中,action和actionForm必须要继承Action和ActionForm一样。相反的非侵入性框架是轻量级框架的重要特点,如hibernate和spring,当我们想去掉hibernate和spring框架时,只需修改相应的程序,程序仍可运行。

    4.侵入性让用户代码产生对框架的依赖,这些代码不能在框架外使用,不利于代码的复用(缺点)。但侵入性可以使用户跟框架更好的结合,更容易更充分的利用框架提供的功能(优点)。 非侵入性的代码则没有过多的依赖,可以很方便的迁移到其他地方。但是与用户代码互动的方式可能就比较复杂。 这两种方式都有各自的利弊,主要看实际开发时怎么选择了。

    简单理解就是,在你的系统中去除掉某个【部分】,如果系统整体已经不能正常运行了,那么这个【部分】就是侵入式的;而如果系统整体仍然能够正常运行,那么这个【部分】就是非侵入式的。

    "眼界决定境界。"

  • 相关阅读:
    【目标检测】RCNN算法详解
    自己搭建传统ocr识别项目学习
    015. asp.net实现简易聊天室
    014. asp.net实现记住密码的功能
    013. asp.net统计网站访问人数
    012. asp.net生成验证码图片(汉字示例/字母+数字)
    011. asp.net内置对象
    010. 使用.net框架提供的属性
    001. 使用ssh连接不上centos 6.5的解决方法及其解决中文乱码
    009. C#中的WebBrowser控件的属性、方法及操作演示代码(转)
  • 原文地址:https://www.cnblogs.com/yanggb/p/12684229.html
Copyright © 2020-2023  润新知