码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 面向对象技术--设 计 模 式


    说在前面:

    本系列文章专注于软考备考复习内容梳理,文章内容是对教材中知识点和考点的提炼,备考过程中可以有针对的进行复习,减少阅读量,有的放矢。


    导航目录:

      • 一、设计模式的要素
      • 二、创建型设计模式
      • 三、结构性设计模式
      • 四、行为设计模式

    一、设计模式的要素

    设计模式一般有以下4个要素。
    
(1)模式名称(Pattern Name)。一个助记名,它用一两个词来描述模式的问题、解决方案和效果。命名一个新的模式增加了设计词汇。设计模式允许在较高的抽象层次上进行设计。基于一个模式词汇表,就可以讨论模式并在编写文档时使用它们。模式名可以帮助人们思考,便于人们与其他人交流设计思想及设计结果。

    
(2)问题(Problem)。描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,可能描述了特定的设计问题,如怎样用对象表示算法等;也可能描述了导致不灵活设计的类或对象结构。

    
(3)解决方案(Solution)。描述了设计的组成成分、它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。

    
(4)效果(Consequences)。描述了模式应用的效果及使用模式应权衡的问题。尽管描述设计决策时并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。

    二、创建型设计模式

    创建型模式抽象了实例化过程。它们可以帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。
创建型模式中有两个不断出现的主旋律:第一,它们都将关于该系统使用哪些具体的类的信息封装起来;第二,它们隐藏了这些类的实例是如何被创建和放在一起的。整个系统关于这些对象所知道的是由抽象类所定义的接口。因此,创建型模式在什么地方被创建、谁创建它、它是怎样被创建的以及何时创建这些方面给予了很大的灵活性。它们允许用结构和功能差别很大的“产品”对象配置一个系统。配置可以是静态的(即在编译时指定),也可以是动态的(在运行时)。

    三、结构性设计模式

    结构性模式涉及如何组合类和对象以获得更大的结构。结构性模式采用继承机制来组合接口或实现。结构性对象模式不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能的一些方法。

    

Composite模式是结构性对象模式的一个实例。它描述了如何构造一个类层次式结构,这一结构由两种类型的对象所对应的类构成。
    


Flyweight 模式为共享对象定义了一个结构。至少有两个原因要求对象共享,即效率和一致性。Flyweight模式的对象共享机制主要强调对象的空间效率。使用很多对象的应用必须考虑每一个对象的开销。
    



Facade 模式描述了如何用单个对象表示整个子系统。模式中的Facade用来表示一组对象,Facade的职责是将消息转发给它所表示的对象。

    



Bridge模式将对象的抽象和其实现分离,从而可以独立地改变它们。

    



Decorator模式描述了如何动态地为对象添加职责。这一模式采用递归方式组合对象,允许添加任意多的对象职责。

    四、行为设计模式

    行为模式涉及算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。这些模式刻画了在运行时难以跟踪的复杂控制流。它们将你的注意力从控制流转移到对象间的联系方式上来。

    


行为类模式使用继承机制在类间分派行为,主要有TemplateMethod和Interpreter两种模式。
    



行为对象模式使用对象复合而不是继承。一些行为对象模式描述了一组对等的对象怎样相互协作以完成其中任一个对象都无法单独完成的任务。
    




Observer模式定义并保持对象间的依赖关系。典型的Observer的例子就是Smalltalk中的模型/视图/控制器,其中一旦模型的状态发生变化,模型的所有视图都会得到通知。

    




其他的行为对象模式常将行为封装在一个对象中,并将请求指派给它。

    未完待续。。。

    更多知识传送:

    • 计算机操作系统–基础知识
    • 计算机操作系统–进程管理
    • 计算机操作系统–存储管理
    • 计算机操作系统–设备管理
    • 计算机操作系统–文件管理
    • 计算机操作系统–作业管理
    • 计算机操作系统–网络操作系统和嵌入式操作系统
    • 计算机操作系统–UNIX操作系统
    • 软件工程基础知识–认识软件工程
    • 软件工程基础知识–软件过程模型
    • 软件工程基础知识–需求分析
    • 软件工程基础知识–系统设计
    • 软件工程基础知识–运行和维护
    • 软件工程基础知识–软件项目管理
    • 软件工程基础知识-软件质量
    • 结构化开发方法–系统分析及设计概述
    • 结构化开发方法–结构化分析方法
    • 结构化开发方法–用户界面设计
    • 面向对象技术–概念及程序设计
    • 面向对象技术–面向对象开发技术
    • 面向对象技术–面向对象的分析与设计方法

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    以上内容整理参考《软件设计师教程(第5版)》和《软件设计师考试同步辅导(第四版)》(忘记是哪个老师的了,侵删)。本文章内容旨在帮助更多想要进军软考,给自己镀金的小伙伴。有兴趣的小伙伴可以共勉。

  • 相关阅读:
    黑客新工具,可窃取Gmail、雅虎、Outlook等电子邮件
    MySQL-事务、日志
    美团T3架构师推荐633页JavaEE核心框架实战
    JavaScript数字、数字方法
    【机器学习-西瓜书】-第3章-线性回归-学习笔记-下
    Shell脚本完成pxe装机配置
    微PE辅助VMware安装操作系统
    【TSP问题】基于遗传算法求解固定的开放式不返回多旅行推销员问题(M-TSP)附matlab代码
    三个要点,掌握Spring Boot单元测试
    HELM FLOW CONTROL practical operation
  • 原文地址:https://blog.csdn.net/qq_37502042/article/details/126597446
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号