Head First summary
学习面向对象好几年了,但一直没有深刻的理解面向对象,直到最近开始做自动化测试平台开发过程中,才发现面向对象的魅力。因而决定好好把设计模式学习下。首先先了解下设计模式相关的定义以及主意事项:
1. 什么是设计模式:
描述了软件设计过程中某一类常见问题的一般性的解决方案。
2. 面向对象设计模式:
描述了面向对象设计过程中、特定场景下、类与相互通信的对象之间常见的组织关系。
经典设计模式种类总共有23种(有点多),但是他们的设计都貌似都是围绕着面向对象三大机制展开的(急待求证),即: 封装、继承、多态。
– 封装,隐藏内部实现
– 继承,复用现有代码
– 多态,改写对象行为
从设计原则到设计模式的几点总结:
1. 针对接口编程,而不是针对实现编程
– 客户无需知道所使用对象的特定类型,只需要知道对象拥有客户所期望的接口。
2. 优先使用对象组合,而不是类继承
– 类继承通常为“白箱复用”,对象组合通常为“黑箱复用”。继承在某种程度上破坏了封装性,子类父类耦合度高;而对象组合则只要求被组合的对象具有良好定义的接口,耦合度低。
3. 封装变化点
– 使用封装来创建对象之间的分界层,让设计者可以在分界层的一侧进行修改,而不会对另一侧产生不良的影响,从而实现层次间的松耦合。
设计模式几点更具体的设计原则:
1. 单一职责原则(SRP):
– 一个类应该仅有一个引起它变化的原因。
[理解]:尽量一个类实现一种行为习惯,比如说不要让一个类既干这个又干那个。
2. 开放封闭原则(OCP):
– 类模块应该是可扩展的,但是不可修改(对扩展开放,对更改封闭)
[理解]:尽量扩展类方法,而不要去修改一个类方法,比如说修改类方法类型,因为一旦修改,导致引用地方都必须修改。扩展新方法可以满足新需求。
3. Liskov 替换原则(LSP):
– 子类必须能够替换它们的基类
4. 依赖倒置原则(DIP):
– 高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
– 抽象不应该依赖于实现细节,实现细节应该依赖于抽象。
[理解]:高层尽量都已乃抽象,与细节无关,这样修改拓展新方法时不会影响到高层功能。
5. 接口隔离原则(ISP):
– 不应该强迫客户程序依赖于它们不用的方法。
刚开始看设计模式,以上一些原则和总结理解不是很深刻,希望能在以后具体设计模式方法中能够得到加强,有助于对面向对象的深入理解和设计开发有一定帮助,为能开发出好用易扩展的测试框架和工具打一点基础。
转载于:https://www.cnblogs.com/Blackeye286/p/3324653.html
Head First summary相关推荐
- tensorflow在训练和验证时监视不同的summary的操作
如果想在训练和验证时监视不同的summary,将train summary ops和val summary ops放进不同的集合中即可. train_writer = tf.summary.FileW ...
- LeetCode 228: Summary Ranges
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
- R语言单变量分析实战:汇总统计(Summary Statistics)、频率表(Frequency Table)、图表(charts: boxplot、histogram、density)
R语言单变量分析实战:汇总统计(Summary Statistics).频率表(Frequency Table).图表(charts: boxplot.histogram.density) 目录
- R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型、分类预测器(分类变量)被自动替换为一组虚拟编码变量、summary函数查看检查模型、使用table函数计算混淆矩阵评估分类模型性能
R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型(Logistic regression).分类预测器(分类变量)被自动替换为一组虚拟编码变量.summary函数查看检查模型.使用t ...
- R语言manova函数进行多元方差分析(Multivariate analysis of variance 、MANOVA)、如果多变量检验结果有显著性,summary.aov函数锦欣单变量方差分析
R语言使用manova函数进行多元方差分析(Multivariate analysis of variance (MANOVA)).如果多变量检验结果具有显著性,使用summary.aov函数获得单变 ...
- R语言使用yardstick包的conf_mat函数计算多分类(Multiclass)模型的混淆矩阵、并使用summary函数基于混淆矩阵输出分类模型评估的其它详细指标(kappa、npv等13个)
R语言使用yardstick包的conf_mat函数计算多分类(Multiclass)模型的混淆矩阵(confusion matrix).并使用summary函数基于混淆矩阵输出分类模型评估的其它详细 ...
- R语言使用skimr包的skim函数查看整个dataframe数据集的summary信息、统计汇总信息(Summarize a whole dataset)
R语言使用skimr包的skim函数查看整个dataframe数据集的summary信息.统计汇总信息(Summarize a whole dataset) 目录
- R语言使用lm构建线性回归模型、并将目标变量对数化实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型系数(coefficient)、模型总结信息(summary)、残差总结信息
R语言使用lm构建线性回归模型.并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图.可视化模型的残差.模型系数(coefficient).模型总结信息(summary).残差总结信 ...
- R语言进行主成分分析(PCA):使用prcomp函数来做主成分分析、使用summary函数查看主成分分析的结果、计算每个主成分解释方差的、每个主成分解释的方差的比例、以及多个主成分累积解释的方差比例
R语言进行主成分分析(PCA):使用prcomp函数来做主成分分析.使用summary函数查看主成分分析的结果.计算每个主成分解释方差的.每个主成分解释的方差的比例.以及多个主成分累积解释的方差比例 ...
- R语言使用lm构建线性回归模型、并将目标变量对数化实战:模型训练集和测试集的残差总结信息(residiual summary)、模型训练(测试)集自由度计算、模型训练(测试)集残差标准误计算
R语言使用lm构建线性回归模型.并将目标变量对数化实战:模型训练集和测试集的残差总结信息(residiual summary).模型训练(测试)集自由度计算.模型训练(测试)集残差标准误计算(Resi ...
最新文章
- 清华学姐的研究生复试经验!
- 【Android 逆向】函数拦截 ( ARM 架构下的插桩拦截 | 完整代码示例 )
- DNN 4.6.2的中文语言包
- Tomcat服务器目录结构
- HUST1024 dance party(最大流)
- node.js小案例_留言板
- c++11 thread类的简单使用
- mardown 标题带数字_标题中带有数字的故事更成功吗?
- One Button Combat
- 深入剖析Redis高可用集群架构原理
- asp.net高校宿舍后勤管理系统
- MySQL主从配置(Django实现主从配置读写分离)
- The Dominant Color (20)
- android 360全景视频,360度全景视频之VR播放
- 仿bing搜索页面制作(大概)
- 几个知识点:1.如何用printf打印百分号% 2.一道很坑的递归题 3.关于 非(感叹号) | ^ ~ || ,即位操作和逻辑与、逻辑或 4.左移<<和>>右移这两个移位操作符
- arduino期末考试题
- 全自动化处理每月缺卡数据,输出缺卡人员信息
- 众恒微拓科技:品质退款率怎么优化
- HTML鲜花网页制作,Htlm技术设计鲜花盛开效果动态图
热门文章
- 深入理解计算机系统 视频教程,深入理解计算机系统1
- oracle走当前时间分区,Oracle分区使用波斯日历的时间间隔
- php8更新,PHP 8 中新特性以及重大调整
- python安装界面翻译_python环境搭建
- Linux网络故障排查命令(ifconfig、ping、telnet、netstat、lsof、nc、curl、tcpdump)
- 【数据结构基础应用】【顺序表】
- NIM的完整形式是什么?
- c ++查找字符串_C ++数组| 查找输出程序| 套装5
- 对照片进行边缘化处理,并将边缘化处理后的结果保存
- linux中的IO函数