当前位置: 首页 > news >正文

软件工程01

软件工程原则:

  • 开闭原则: open closed principle : 对扩展开放,对修改关闭,,,只让扩展,不让修改,用新增的类去替代修改的类
    扩展之后,代码不用改变,,

过程: 从 interface ===》 设计模式中的工厂模式 ===》IOC/DI

目的: 面向抽象编程,将可变化的部分封装在一个地方,,保证代码的相对稳定,实现开闭原则,,写出可维护的代码


单纯的 interface 可以统一方法的调用,但是不能统一 对象的实例化,对象的实例化通过工厂和放射去做


软件工程中的变化:

  • 用户输入的变化
  • 技术的选择,比如使用什么类型的数据库

将用户的输入直接转换成对象,不去new对象,,通过反射,让创建对象的代码变得稳定


对象,类,元类

  • 类是对象的抽象,,类是用来描述对象的
  • 元类是对类的描述 ,,元类使编码更加的灵活
IOC

IOC: inversion of control ,控制反转,他是软件工程中的一种设计模式和原则,,原本程序的控制权是程序本身,程序员写的代码,,IOC将程序的控制权,交给了配置文件,交给了用户,比如需求发生了变化,,你要去更改控制代码,,,更改控制代码的方式,由程序员的代码修改变成了 ===》 其他人的配置文件修改

  • IOC和工厂方法有什么区别,为什么有了工厂方法还要使用IOC?
    ioc依赖注入实例,不需要工厂类,,所有的代码中都不再new对象,容器把这个对象给我们使用,,
    而工厂模式: 是我们去找工厂要这个对象
    而控制反转就是从我们主动拿,===》 到 容器主动给 ,,,就是控制代码不再是我们自己写的 ===》而是容器主动控制的
DI

DI: dependency injection : 依赖注入,, 对象和对象之间的相互作用,产生这个依赖的方式是多种多样的,,可以是直接new一个对象,也可以是 从容器注入进来,,依赖注入是IOC的一种实现,,从你去控制这个对象应该从工厂里面拿 到===》 容器控制,给你这个对象

依赖注入的方式:

  • 属性注入
  • 构造方法注入
DIP

DIP : dependency inversion principle : 依赖倒置
正常编码的时候,我们会随手实例化一个对象,,就是依赖了一个具体,,而依赖倒置,,就是让我们不在依赖一个具体,,而是去依赖接口

  • 抽象不应该依赖细节,细节应该依赖抽象
  • 高层模块不应该依赖底层模块,两者都应该依赖抽象
    • 高层模块是指 : 抽象
    • 底层模块是指: 具体的实现

依赖倒置: 就是由依赖一个具体变成了依赖一个抽象

http://www.lryc.cn/news/102361.html

相关文章:

  • UML/SysML建模工具更新(2023.7)(1-5)有国产工具
  • Mac plist文件
  • 基于Java+SpringBoot+vue前后端分离校园周边美食探索分享平台设计实现
  • 【openwrt】package介绍
  • vue 封装一个鼠标拖动选择时间段功能
  • ubuntu22.0安装Barrier局域网共享鼠标键盘
  • ffmpeg常用功能博客导航
  • shopee,lazada,etsy店群如何高效安全的管理
  • 【计算复杂性理论】证明复杂性(八):命题鸽巢原理(Propositional Pigeonhole Principle)的指数级归结下界
  • 使用DataX实现mysql与hive数据互相导入导出
  • 语音转录成文本:AI Transcription for mac
  • [nlp] TF-IDF算法介绍
  • 一些感想,写在8月之前
  • 推动数字经济高质量发展需破解三大挑战
  • Pycharm工具Python开发自动添加注释(详细)
  • RUST 有哪些整型?
  • 【Python 实战】---- 批量识别图片中的文字,存入excel中【使用百度的通用文字识别】
  • 探索前端图片如何携带token进行验证
  • 飞桨AI Studio可以玩多模态了?MiniGPT4实战演练!
  • C++笔记之++i和i++是原子操作吗?
  • Pytest+Allure+Excel接口自动化测试框架实战
  • 阿里云国际版账号注册常见问题汇总
  • Flowable基础
  • 力扣热门100题之合并区间【中等】
  • 机会成本:隐形的手,驱动你的选择
  • win10日程怎么同步到安卓手机?电脑日程同步到手机方法
  • 7月31日每日两题
  • 首期华为云ROMA Connect《企业集成战略与华为数字化之道》高研班在东莞圆满举办
  • JS语法知识点
  • 【设计模式】 策略模式