网站开发程序员工资,北京设计机构,小程序开发教程知乎,做性的网站有哪些内容软件工程与计算总结#xff08;十三#xff09;详细设计中的模块化与信息隐藏
之前的博客中#xff0c;模块需要隐藏的决策主要由“职责的实现”and“实现的变更”两类#xff0c;在面向对象方法中#xff0c;需要做到的就是#xff1a;
封装类的职责#xff0c;隐藏职…
软件工程与计算总结十三详细设计中的模块化与信息隐藏
之前的博客中模块需要隐藏的决策主要由“职责的实现”and“实现的变更”两类在面向对象方法中需要做到的就是
封装类的职责隐藏职责的实现预计将会发生的变更抽象它的接口隐藏它的内部机制
目录
一.封装类的职责
1.类的职责
2.封装——分离接口与实现
3.封装实现细节
二.为变更而设计
1.封装变更
2.多态
3.依赖倒置原则
4.总结 一.封装类的职责
1.类的职责
职责是指类或者对象维护一定的状态信息并基于状态履行行为职能的能力类与对象的职责是来源于需求的否则就不会产生对系统的共线就没有存在的必要~
按照信息隐藏的思想一个模块应该通过稳定的接口对外表现其所承载的需求而隐藏它对需求的内部实现细节。那么类就应该通过接口对外表现它直接和间接承载的需求而隐藏类内部的构造原理这恰恰是“封装”想要达到的~
2.封装——分离接口与实现
封装通常由两方面的含义
将数据和行为同时包含在类中不仅仅是简单地将成员变量声明代码与方法代码拼接到一个类中了事而是需要集中数据与行为数据与行为需要相互支撑、紧密联系分离对外接口与内部实现接口描述了类的职责需要对外公布。供外界调用以帮助系统满足最终需求实现是类的内部实现机制不需要对外公开外界也不应该知道他的具体细节~ 在面向对象方法中接口通常描述以下几个内容 对象之间交互的消息方法名消息中的参数消息返回结果的类型与状态无关的不变量需要处理的异常 插播一条关于接口的定义接口是一种规范用于定义软件系统中各个组件之间的通信方式和数据交换格式。它定义了一组方法、属性和参数以及它们之间的关系和约束条件使得不同的组件可以相互协作实现特定的功能。 3.封装实现细节 对封装的简单理解是隐藏类的属性和数据信息但这是远远不够的封装需要隐藏接口之外所有的实现细节
封装数据和行为封装要保护数据和行为成员方法和成员变量都设置了不同的可见性封装内部结构实现中使用的复杂数据结构是需要重点封装的因为程序设计语言目前在程序调用时还无法做到对复杂数据结构进行值传递而他们使用的引用传递是破坏封装的封装其他对象的引用有时一个对象所持有的其他对象的引用也是需要隐藏起来的。封装类型信息在多种子类型因为具备一些共性而被视作一种类型就加以使用时应该隐藏其具体子类型的类别封装潜在变更信息隐藏需要隐藏变更
二.为变更而设计
1.封装变更开闭原则
变更是软件开发面临的最大挑战也是软件维护成本远高于软件开发成本的主要原因因此如何在开发阶段就为将来可能得变更进行预啊合计以减少维护成本就成为设计师必须考虑的问题~
开闭原则
好的设计应该对扩展开放好的设计应该对修改关闭
简单来说开闭原则是指在发生变更时好的世界只需要添加新的代码而不需要修改原有的代码就能实现变更~
2.多态
语义多态指的是不同类型的值能够通过统一的接口来操纵表现为不论实际类型为何直接调用该统一接口这样系统就可以根据实际类型的不同表现出不同行为~实现存在如下分类 不同语言中的实现有所不同例如C使用模版机制、java则使用泛化机制
3.依赖倒置原则DIP
抽象不应该依赖于细节细节应该依赖于抽象因为抽象是稳定的细节是不稳定的高层模块不应该依赖于低层模块而是双方都依赖于抽象因为抽象是稳定而高层模块和低层模块都可能是不稳定的
4.总结
按照信息隐藏思想类要封装潜在的变更但是实践经验表面仅仅封装变更是不够的还需要使用多态或者DIP的方法实现符合OCP的变更以减少变更带来的幅面影响~
如果在软件开发时未能预计到变更的发生那么在维护阶段遇到变更时可以使用多态手段保证OCP满足~