




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
o 萤火虫 o 1 1 简述简述 开开 闭闭 原则的基本思想 请举出一个使用了软件原则的基本思想 请举出一个使用了软件 开开 闭闭 原则的软件设计原则的软件设计 模式 其中何处体现了模式 其中何处体现了 开开 闭闭 原则 原则 答 开 闭 原则 软件实体应当对扩展开放 而对修改关闭 开 闭 原则要求软 件系统能够在不需要修改原有类的基础上 通过增加类达到扩展功能的目的 Abstract factory 体现了这个原则 如果想增加一类新的 products 只需在 product 类体系中增加各个 products 然后在 factory 类体系结构中增加一个 concrete factory 就 可以了 而不需要对现有类做任何修改 The Open closed principle ocp 在不改动过模块 源代码的情况下扩展模块的行为 软件实体 类模块 函数等 应该是可以扩展的 但是不可以修改的 2 2 简述依赖例转原则的基本思想 请举出一个使用了软件依赖原则的软件设计模式 其简述依赖例转原则的基本思想 请举出一个使用了软件依赖原则的软件设计模式 其 中何处体现了依赖原则 中何处体现了依赖原则 答 依赖倒置原则的基本思想是 高层模块不应该依赖于低层模块 二者都应该依赖 于抽象 抽象不应该依赖于细节 细节应该不依赖于抽象 Tomplate method 就体现了这 个原则 它定义了一个操作中的算法骨架 而将一些步骤延迟到子类中 template method 使得子类不改变一个算法的结构 即可重定义该算法的某些特定步骤 3 3 什么是单一职责原则 请举出一个使用了单一职责原则的软件设计模式 其中何处体什么是单一职责原则 请举出一个使用了单一职责原则的软件设计模式 其中何处体 现了单一职责原则 现了单一职责原则 答 基本思想 SRP 使得一个类或一个模块承担的责任尽可能的少 使尽可能少的因素 或动机影响该类或该模块 即增大类或模块的内聚性 减少其耦合度 SRP 是所有原则中最 简单的之一 也是最难正确运用的之一 COMMAND 模式体现了 SRP 原则 大多数类都是一组方法和相应的一组变量的结合 而该 模式只是封装了一个没有任何变量的函数 它对函数的关注超过了类 将一个请求封装为一 个对象 从而可用不同的请求对客户进行参数化 4 4 软件复用可采用类的继承方式和类的聚合方式 比较两者的优缺点 软件复用可采用类的继承方式和类的聚合方式 比较两者的优缺点 答 聚合 一个对象拥有另一个对象或对另一个对象负责 即一个对象包含另一个对象 或是另一个对象的一部分 并且聚合对象和其所有具有相同的生命周期 即所谓的 同生共 死 关系 聚合复用优点 容器类仅能通过被包含对象的接口来对其进行访问 黑盒 复用 因为被包含对象的内部细节对外是不可见 包装性好 实现上的相互依赖性比较小 每一个类只专注于一项任务 通过获取指定其他的具有相同类型的对象的使用 可以在运 行期间动态地定义 对象的 组合 聚合的缺点 导致系统中的对象过多 为了能将多个不同的对象作为组合块来使用 必须仔细地对接口进行定义 类继承 是一种通过扩展 一个已有对象的 实现 从而获得新功能的复用方法 继承的优点 容易进行新的实现 因为其大多数可继承而来 易于修改或扩展那些 被复用的实现 继承的缺点 破坏了封装性 因为这会将父类的实现细节暴露给子类 白盒 复 用 因为父类的内部细节对于子类而言通常是可见的 当父类的实现更改时 子类也不得 不随之更改 从父类继承来的实现将不能在运行期间进行改变 5 5 画出工厂方法模式的结构图画出工厂方法模式的结构图 什么情况下适合使用工厂方发模式 什么情况下适合使用工厂方发模式 o 萤火虫 o 其中 product 为工厂模式所要创建的对象类型定义一个接口 Concrete product 实现 product 接口 Creator 声明工厂方法 factory method 返回值为 product 的一个对象 Concrete creator 覆写 factory Method 返回值为 concrete product 的一个具体 实例 在下面情况下你可以考虑使用工厂方法模式 1 当客户程序不需要知道要使用对象的创建过程 2 客户程序使用的对象存在变动的可能 或者根本就不知道使用哪一个具体的对象 6 6 画出合成模式 画出合成模式 CompositeComposite 的结构图 举例说明一个可以应用合成模式的软件设计 的结构图 举例说明一个可以应用合成模式的软件设计 实例 说明其中各角色的作用 实例 说明其中各角色的作用 实例 计算机和立体组合音响这样的设备经常被组装成一部分整体层次结构或者是容器 层次结构 例如 底盘可以包含驱动装置和平面板 总线含有多个插件 机柜包括底盘 总 o 萤火虫 o 线等 这样结构很自然的用 composite 模式进行模拟 Equipment 类为在部分 整体层次结构中的所有设备定义一个接口 Equipment 声明 一些操作返回一个设备的属性 例如它的能是消耗和价格 子类为指定的设备实现了这些操 作 Equipment 还声明了一个 Create Iterator 操作 该操作为访问它的零件返回一个 Iterator 这个操作的缺省实现返回一上 NullIterator 它在空集上迭代 Composite Equipment 是包含其它设备的基类 它也是 Equipment 的子类 7 7 简述门面模式 简述门面模式 FacadeFacade 和中介者模式 和中介者模式 MediatorMediator 的基本思想 两者的差异何在 的基本思想 两者的差异何在 答 门面模式 facade 又称外观模式 基本思想 为子系统中的一组接口提供一个一 致的界面 Facade 模式定义了一个高层接口 这个接口使得这一子系统更加容易使用 中介者模式 基本思想 Mediator Pattern 中文译为 中介者模式 调停者模式 调停者模式的定义是 用一个调停对象来封装一系列的对象交互 调停者使各对象不需要显 式地相互引用 从而使其耦合松散 而且可以独立地改变它们之间的交互 简单点来说 将 原来两个直接引用或者依赖的对象拆开 在中间加入一个 调停 对象 使得两头的对象分 别和 调停 对象引用或者依赖 两者的差异 从目的上看 调停者模式与门面模式有些相似 但是门面模式是介于客 户程序与子系统之间的 而调停者模式是介于子系统与子系统之间的 这也注定了它们有很 大的区别 门面模式是将原有的复杂逻辑提取到一个统一的接口 简化客户对逻辑的使用 它是被客户所感知的 而原有的复杂逻辑则被隐藏了起来 而调停者模式的加入并没有改变 客户原有的使用习惯 它是隐藏在原有逻辑后面的 使得代码逻辑更加清晰可用 8 8 简述观察者模式的基本思想 如何实现当目标对象发生变化时多个观察者对象的同步简述观察者模式的基本思想 如何实现当目标对象发生变化时多个观察者对象的同步 更新 画出他们之间的协作图更新 画出他们之间的协作图 1 ObserverObserver 观察者 基本思想 观察者 基本思想 对象间的一种一对多的依赖关系 当一个对象的 状态发生变化时 所有依赖于它的对象都得到通知并自动更新 2 协作 协作 当 Concrete Subject 发生任何可能导到其参观者与其本身状态不一致的改 变时 它将通知它的各个观察者 在得到一个具体的目标改变通知后 Concrete Object 对 象可向目标对象查询信息 Concrete Object 使用这个些信息以使它的状态与目标对象的状 态一致 3 协作图 协作图 o 萤火虫 o 9 9 举一适合使用举一适合使用 StateState 模式的例子 与不使用该模式相比 有哪些优点模式的例子 与不使用该模式相比 有哪些优点 举例 抽象状态类定义了一个抽象方法 写程序 与不使用该模式相比优点 State 模式将特定的状态相关的行为封装在一个类中 由于所有状态相关的代码都存在于某 个 concrete state 中 所以通过定义新的子类可以很容易的增加新的状态和转换 10 10 有哪些模式的使用可以使得类的复用性增强 说明你的理由 有哪些模式的使用可以使得类的复用性增强 说明你的理由 策略模式 strategy 属于对象行为型模式 主要定义一系列的算法 把这些算法 一个个封装成拥有共同接口的单独的类 并使他们之间互换 客户端调用他们的时候互不影 响 算法使用和算法分离 即将变化的具体算法封装起来 降低了代码的耦合度 算法提取 起来 使算法得到重用 中介者模式 mediator 用一个调停对象来封装一系列的对象交互 调停者使各对 象不需要显式地相互引用 从而使其耦合松散 而且可以独立地改变它们之间的交互 即 将原来的两个直接引用或者依赖的对象拆开 在中间加入一个 调停 对象 使得两头的对 象分别和 调停 对象引用或者依赖 提高了原有系统的可读性 将原有系统的多对多转化 为一对多 提高了代码的可复用性 适配器 Adapter 模式 是的原本由于接口不兼容而不能再一起的那些类可以一起 工作 如画图程序中 已实现绘制点 直线等功能 为了让客户程序在使用的时候不用关心 不同定义 定义个抽象类规范接口 当去实现绘图时 发现系统其它地方已有制图实现 但 是系统已有的方法与抽象类中规定方法不一样 这时候用适配器模式可以解决这问题 适配 器模式是为了面向接口编程中更好的复用 11 11 比较比较 AdapterAdapter 和和 ProxyProxy 模式使用上的异同之处 模式使用上的异同之处 适配器模式 Adapter 将一个类的接口转换成客户希望的另外一个接口 Adapter 模 式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 代理模式有两个英文名字 Proxy Pattern 和 Surrogate Pattern 代理模式 为其他 对象提供一种代理以控制对这个对象的访问 说白了就是 在一些情况下客户不想或者不能 直接引用一个对象 而代理对象可以在客户和目标对象之间起到中介作用 去掉客户不能看 到的内容和服务或者增添客户需要的额外服务 o 萤火虫 o 两者的主要区别主要区别在于代理模式应用的情况是不改变接口命名的 而且是对已有接口功能 的一种控制 而适配器模式则强调接口转换 12 12 说明说明 ObserverObserver 模式的基本实现方式 如果不用该模式 要达到同样的效果 你会如模式的基本实现方式 如果不用该模式 要达到同样的效果 你会如 何做 何做 观察者模式观察者模式在关于目标角色 观察者角色通信的具体实现中 有两个版本 一种情况便是目标角色在发生变化后 仅仅告诉观察者角色 我变化了 观察者角色 如果想要知道具体的变化细节 则就要自己从目标角色的接口中得到 这种模式被很形象的 称为 拉模式 就是说变化的信息是观察者角色主动从目标角色中 拉 出来的 还有一种方法 那就是我目标角色 服务一条龙 通知你发生变化的同时 通过一个 参数将变化的细节传递到观察者角色中去 这就是 推模式 管你要不要 先给你啦 这两种模式的使用 取决于系统设计时的需要 如果目标角色比较复杂 并且观察者角 色进行更新时必须得到一些具体变化的信息 则 推模式 比较合适 如果目标角色比较简 单 则 拉模式 就很合适 如果不使用该模式 可采用策略模式 将不同的情况作为子类封装在一个类中 模拟 observer 模式中目标角色的不同状态 当外部状态发生变化时 可以选择不同的 strategy1 strategy2 改变观察者角色 从而达到与观察者模式同样的效果 13 13 请列举一个使用装饰模式的例子 画出你的例子的类图结构 请列举一个使用装饰模式的例子 画出你的例子的类图结构 JUnit 中的装饰模式 在 JUnit 中 TestCase 是一个很重要的类 允许对其进行功能 扩展 在 junit extensions 包中 TestDecorator RepeatedTest 便是对 TestCase 的 装饰模式扩展 下面我们将它们和上面的角色对号入座 14 14 列举两个可以使我们在程序中不必使用列举两个可以使我们在程序中不必使用 if elseif else 结构的软件设计模式 使用软件设结构的软件设计模式 使用软件设 计模式是如何做到这一点的 计模式是如何做到这一点的 策略模式 strategy 和状态模式 state 策略模式是将不同算法 处理方法 封装到 stategy 类中 状态模式是将不同状态封装 到 state 类中 二者都是通过 类中的子类 实现不同情况的调用 从而有效的替换充满在 程序中的 if else 语句 15 15 你认为在你认为在 LinuxLinux 平台上直接运行平台上直接运行 WIN32WIN32 程序有可能吗 如认为不可能请说明理由 程序有可能吗 如认为不可能请说明理由 o 萤火虫 o 如认为可能应如何实现这一目标 如认为可能应如何实现这一目标 1 两个 OS 内部实现有很大差别 甚至连路径的分隔符都不一样 一个 WIN32 程序无 论如何到了最后也要调用 Window api 而这些 api 在 linux 上根本没有实现 2 例如 就 用户界面来说 有些 windows 的控件 在 Linux 上根本连对应的具有类似功能的控件都没有 怎么执行 如果再涉及进程 线程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建省榕江进出口有限公司招聘1人笔试历年参考题库附带答案详解
- 2025福建漳州城投建材集团有限公司劳务派遣招聘5人笔试历年参考题库附带答案详解
- 2025赤峰龙韵城市建设有限公司所属子公司员工招聘21人模拟试卷及答案详解参考
- 2025湖北襄阳市保康国有资本投资集团有限公司招聘12人笔试历年参考题库附带答案详解
- 2025浙江温州市鹿通文化旅游有限公司招聘工作人员10人笔试历年参考题库附带答案详解
- 2025广东“百万英才汇南粤”佛山市高明区选聘公办初中校长9人考前自测高频考点模拟试题及答案详解(典优)
- 2025广西壮族自治区山口红树林生态国家级自然保护区管理中心招聘考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025恒丰银行成都分行春季校园招聘6人考前自测高频考点模拟试题及答案详解(有一套)
- 2025年宁夏电力集体资产投资集团有限公司高校毕业生招聘(第三批)考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025北京邮电大学与通信工程学院招聘1人(人才派遣)考前自测高频考点模拟试题及答案详解(易错题)
- 农业银行笔试题库及答案
- 教师岗位聘任申请书模板合集
- 2025年贵州省毕节市辅警招聘考试题库及答案
- 12、口腔科诊疗指南及技术操作规范
- 贝朗DIALOG+透析机水路设计概览课件
- 光电功能材料课程-13-18课件
- 施工现场污水排放方案
- 黔西市中医医院金阳院区环评报告
- 我的家乡-枣阳
- 青春期生理卫生知识讲座男生篇
- 高中期中考试家长会PPT课件 (共51张PPT)
评论
0/150
提交评论