设计模式分类

143 未经授权,禁止转载了解课程
课程介绍
讨论{{interaction.discussNum ? '(' + interaction.discussNum + ')' : ''}}
适合人群
设计模式的基础是:多态。 初学者:积累案例,不要盲目的背类图。 初级开发人员:多思考,多梳理,归纳总结,尊重事物的认知规律,注意临界点的突破,不要浮躁。 中级开发人员:对经典则组合设计模式的大量。
你将会学到
学习设计模式会让你早点脱离面向对象编程的“菜鸟期”。写出原汁原味的Go代码
课程简介


  

一:如果把修习软件开发当做武功修炼的话,那么可以分为招式内功   


      • 数据结构

      • 算法

      • 设计模式

      • 架构设计

      • 软件工程




对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。在面向对象设计中,可维护性的复用是以设计原则为基础的。每一个原则都蕴含一些面向对象设计的思想,可以从不同的角度提升一个软件结构的设计水平。


面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则。面向对象设计原则也是我们用于评价一个设计模式的使用效果的重要指标之一。

原则的目的: 高内聚,低耦合






二:软件设计模式的作用


    1. 如何将代码分散在几个不同的类中?

    2. 为什么要有“接口”?

    3. 何谓针对抽象编程?

    4. 何时不应该使用继承?

    5. 如果不修改源代码增加新功能?

    6. 更好地阅读和理解现有类库与其他系统中的源代码。


    学习设计模式会让你早点脱离面向对象编程的“菜鸟期”。




三: 如何学好设计模式


    设计模式的基础是:多态。


    初学者:积累案例,不要盲目的背类图。


    初级开发人员:多思考,多梳理,归纳总结,尊重事物的认知规律,注意临界点的突破,不要浮躁。


    中级开发人员:合适的开发环境,寻找合适的设计模式来解决问题。


    多应用,对经典则组合设计模式的大量,自由的运用。要不断的追求。



四:软件设计模式的种类


GoF提出的设计模式有23个,包括:

(1)创建型(Creational)模式:如何创建对象;

(2)结构型(Structural )模式:如何实现类或对象的组合;

(3)行为型(Behavioral)模式:类或对象怎样交互以及怎样分配职责。


有一个“简单工厂模式”不属于GoF 23种设计模式,但大部分的设计模式书籍都会对它进行专门的介绍。

设计模式目前种类: GoF的23种   + “简单工厂模式” = 24种。


FYprpFuUUAEc1Lh.jpg


FYprpFsUcAEAPYI.jpg



  五:设计模式总览表


pasted image 0.png





pasted image 1.png



pasted image 2.png



六:设计模式类图

微信图片_20230801210740.png




七:课件对应文档:




微信图片_20230801211602.png





八:部分源码展示

工厂方法模式.jpg



展开更多
发布
头像

{{ item.user.nick_name }} {{ EROLE_NAME[item.user.identity] }}

置顶笔记
讨论图
{{ item.create_time }}回复
  • 删除

    是否确认删除?

    确认
    取消
  • {{ item.is_top == 1 ? '取消置顶' : '置顶'}}

    已有置顶的讨论,是否替换已有的置顶?

    确认
    取消
{{ tag.text}}
头像
{{ subitem.user.nick_name }}{{ EROLE_NAME[subitem.user.identity] }}
{{ subitem.create_time }}回复
删除

是否确认删除?

确认
取消
发布
{{pageType === 'video' ? '讨论区抢占沙发,可获得双倍学分' :'讨论区空空如也,你来讲两句~'}}
发布
{{tips.text}}
{{ noteHeaderTitle }} 笔记{{ hasMyNote ? '我的笔记' : '记笔记' }}
{{ hasMyNote ? '我的笔记' : '记笔记' }}
优质笔记
更新于:{{ $dayjs.formate('YYYY-MM-DD HH:mm:ss', item.last_uptime*1000) }}
头像
{{ detail.username }}

公开笔记对他人可见,有机会被管理员评为“优质笔记”

{{ noteEditor.content.length }}/2000

公开笔记
保存
提问

讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。

记录时间点
记录提问时视频播放的时间点,便于后续查看
公开提问
提交