#设计模式#GeekBand设计模式第一周课程

今天看了李老师的设计模式,晚上在此通过记忆整理一下,明天再根据笔记详细整理。

————————通过记忆整理————————————————————————

设计原则 比 设计模式 更本质

目前常用的设计模式有23种,然而这都是方法,更重要的是其中本质的东西:设计原则,设计思想。

分解和抽象

面向对象的三个重要概念是:1、封装  2、继承 3、多态 但是这三个概念都是底层的,在上层上需要使用“抽象”的思想去处理问题。

分解:分而治之,经常使用的解决问题的方法,把问题拆分开来

抽象:将问题统一起来看待,找到不考虑细节、更理想化的模型

设计模式的目标是:复用

当处理一个简单,或者不需要变化的问题时,设计模式的不同影响不大。

然而一旦出现变化(客户需求变化,开发平台变化,开发人员变化),那么设计模型的作用就体现出来了。

在一系列设计原则的指导下,可以尽可能小的修改代码,就应付出现的变化。

设计原则

李老师提到了好几条设计原则,

我记忆最深的是三个思想:

1、向下依赖

稳定的模块不要依赖变化的模块。

2、各司其职

每个代码完成其对应的工作,比如“打印”,需要该类需要被打印,那么就自己提供打印函数。这样通过多态性就可以调用这个函数。

3、继承和组合。

如果子类不会使用父类的太多函数,可以考虑使用“组合”的模式,而不是“继承”的模式。

继承其实在一定程度上破坏了“封装”,增加了耦合

————————通过笔记整理————————————————————————

时间: 2024-10-27 07:36:00

#设计模式#GeekBand设计模式第一周课程的相关文章

C++面向对象高级编程(上)第一周课程

课程内容 C++发展简述 头文件(guard declaration,内容,结构,访问控制,友元) 构造函数(initial list, default para) 参数与返回值传递(by value & by reference,const) 操作符重载(成员函数与非成员函数) STL中Complex类举例解析 总结 第一周课程不多,主要目标是让学生可以快速地开始写代码,而且这是一个有良好结构和编程风格的程序.这也造成很多语言细节需要自己去深入了解. 待完成事项 阅读<The C++ Pr

[Linux内核分析第一周课程] 由C语言程序的汇编表示观察CPU寄存器与内存的互动

孟宁<Linux内核分析>第一周实验 作者:Zou Le 原创作品转载请注明出处. 课程信息: <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ---------------------------实验正文--------------------------- 本实验在实验楼64位LIinux虚拟机下进行. C代码如下: int increment5(int x) { return x + 5; }

软件测试第一周课程随笔

这周是第一节课,课程开始时的一个经典问题:什么是软件测试?软件测试   是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程. 测试的目的:1.发现一些可以通过测试避免的开发风险. 2.实施测试来降低所发现的风险. 3.确定测试何时可以结束. 4.在开发项目的过程中将测试看作是一个标准项目. 软件测试的分类:黑盒测试,白盒测试 黑盒测试:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用.在测试中,把程序看作一个不能打开的黑盒子,在

第一周课程作业(2016.7.31)

本周作业内容: 1.描述计算机的组成及其功能. 计算机主要由五部分组成:控制器.运算器.存储器.输入设备.输出设备 1.控制器:计算机的核心,控制计算机如何寻址,数据提取及将控制信号传送到各部件,协调各设备之间如何进行工作. 2.运算器:实现算术运算和逻辑运算的设备. 3.存储器:存储程序.数据及各种信号等信息,用来给运算器调用.常用的有硬盘.内存 4.输入设备:将程序.数据.控制命令等信息输入到计算机.常见的有键盘.鼠标.CD-ROM,磁盘机等 5.输出设备:跟输入设备刚好相反,把计算机运行结

第一周课程作业

1.描述计算机的组成及其功能: 答:组成:控制器+运算器+存储器+输入设备+输出设备. 功能:控制器对程序规定的控制信息进行解释,运算器对数据进行各种算术运算和逻辑运算,存储器储存程序.数据等信息,输入设备用于采集数据并输入到计算机,输出设备将计算机的各种信息进行显示. 2.按系列罗列Linux的发行版,并描述不同发行版之间的联系和区别. 答:Linux发行版主要分为RedHat.Debian.Slackware等系列,其中RedHat衍生版主要包括CentOS和Rhel,主要适用企业用户,De

机器学习-第一周

机器学习-第一周 这是机器学习的第一周课程,涉及到的内容较少,主要是认识一下什么是机器学习以及机器学习两个主要的分类:有监督学习和无监督学习.另外,通过一个最基础的线性回归模型来介绍机器学习中的一些相关的概念. 本周内容思维导图 Introduce 什么是机器学习? A computer program is said to learn from experience E with respect to some task T and some performance measure P, if

机电传动控制课程第一周学习笔记

机电传动课程第一周学习笔记 本周的学习内容主要是第一章绪论和第二章机电传动系统的动力学基础,结合课程学习和预习复习回顾内容如下: 1.绪论:学习了机电传动控制目的与任务.发展历程和我们该如何学习这门课程. 2.机电传动系统的动力学基础: a.运动方程式:对于单一拖动系统或者多拖动系统,在分析时一般都折算到一根轴(电动机轴)上,折算的基本原则是,折算前的多轴系统同折算后的单轴系统在能量关系上或功率关系上保持不变.而对于单 走拖动系统的运动方程式如下. b.判断TM/TL的符号:主要概括为三条:规定

机器学习001 deeplearning.ai 深度学习课程 Neural Networks and Deep Learning 第一周总结

Deep Learning Specialization 吴恩达老师最近在coursera上联合deeplearning.ai 推出了有关深度学习的一系列课程,相对于之前的machine learning课程,这次的课程更加实用,作业语言也有matlab改为了python从而更加贴合目前的趋势.在此将对这个系列课程做一个学习笔记. 而这次的Deep Learning Specialization分为五门课程,分别为:Neural Networks and Deep Learning,Improv

20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结

20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址: 需求分析 功能要求 1.自动生成题目 可独立使用(能实现自己编写测试类单独生成题目的功能) 可生成不同等级题目,类似于: 1级题目:2 + 5 =: 10 - 5 = 之类的两个数,一个运算符的题目 2.题目运算(判题) 可独立使用 实现中缀表达式转为后缀表达式并计算 判断用户答题正误,并输出正确结果 3.支持真分数 可独立使用 实现分数算式的