学习面向对象好几年了,但一直没有深刻的理解面向对象,直到最近开始做自动化测试平台开发过程中,才发现面向对象的魅力。因而决定好好把设计模式学习下。首先先了解下设计模式相关的定义以及主意事项:

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相关推荐

  1. tensorflow在训练和验证时监视不同的summary的操作

    如果想在训练和验证时监视不同的summary,将train summary ops和val summary ops放进不同的集合中即可. train_writer = tf.summary.FileW ...

  2. LeetCode 228: Summary Ranges

    Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...

  3. R语言单变量分析实战:汇总统计(Summary Statistics)、频率表(Frequency Table)、图表(charts: boxplot、histogram、density)

    R语言单变量分析实战:汇总统计(Summary Statistics).频率表(Frequency Table).图表(charts: boxplot.histogram.density) 目录

  4. R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型、分类预测器(分类变量)被自动替换为一组虚拟编码变量、summary函数查看检查模型、使用table函数计算混淆矩阵评估分类模型性能

    R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型(Logistic regression).分类预测器(分类变量)被自动替换为一组虚拟编码变量.summary函数查看检查模型.使用t ...

  5. R语言manova函数进行多元方差分析(Multivariate analysis of variance 、MANOVA)、如果多变量检验结果有显著性,summary.aov函数锦欣单变量方差分析

    R语言使用manova函数进行多元方差分析(Multivariate analysis of variance (MANOVA)).如果多变量检验结果具有显著性,使用summary.aov函数获得单变 ...

  6. R语言使用yardstick包的conf_mat函数计算多分类(Multiclass)模型的混淆矩阵、并使用summary函数基于混淆矩阵输出分类模型评估的其它详细指标(kappa、npv等13个)

    R语言使用yardstick包的conf_mat函数计算多分类(Multiclass)模型的混淆矩阵(confusion matrix).并使用summary函数基于混淆矩阵输出分类模型评估的其它详细 ...

  7. R语言使用skimr包的skim函数查看整个dataframe数据集的summary信息、统计汇总信息(Summarize a whole dataset)

    R语言使用skimr包的skim函数查看整个dataframe数据集的summary信息.统计汇总信息(Summarize a whole dataset) 目录

  8. R语言使用lm构建线性回归模型、并将目标变量对数化实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型系数(coefficient)、模型总结信息(summary)、残差总结信息

    R语言使用lm构建线性回归模型.并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图.可视化模型的残差.模型系数(coefficient).模型总结信息(summary).残差总结信 ...

  9. R语言进行主成分分析(PCA):使用prcomp函数来做主成分分析、使用summary函数查看主成分分析的结果、计算每个主成分解释方差的、每个主成分解释的方差的比例、以及多个主成分累积解释的方差比例

    R语言进行主成分分析(PCA):使用prcomp函数来做主成分分析.使用summary函数查看主成分分析的结果.计算每个主成分解释方差的.每个主成分解释的方差的比例.以及多个主成分累积解释的方差比例 ...

  10. R语言使用lm构建线性回归模型、并将目标变量对数化实战:模型训练集和测试集的残差总结信息(residiual summary)、模型训练(测试)集自由度计算、模型训练(测试)集残差标准误计算

    R语言使用lm构建线性回归模型.并将目标变量对数化实战:模型训练集和测试集的残差总结信息(residiual summary).模型训练(测试)集自由度计算.模型训练(测试)集残差标准误计算(Resi ...

最新文章

  1. 清华学姐的研究生复试经验!
  2. 【Android 逆向】函数拦截 ( ARM 架构下的插桩拦截 | 完整代码示例 )
  3. DNN 4.6.2的中文语言包
  4. Tomcat服务器目录结构
  5. HUST1024 dance party(最大流)
  6. node.js小案例_留言板
  7. c++11 thread类的简单使用
  8. mardown 标题带数字_标题中带有数字的故事更成功吗?
  9. One Button Combat
  10. 深入剖析Redis高可用集群架构原理
  11. asp.net高校宿舍后勤管理系统
  12. MySQL主从配置(Django实现主从配置读写分离)
  13. The Dominant Color (20)
  14. android 360全景视频,360度全景视频之VR播放
  15. 仿bing搜索页面制作(大概)
  16. 几个知识点:1.如何用printf打印百分号% 2.一道很坑的递归题 3.关于 非(感叹号) | ^ ~ || ,即位操作和逻辑与、逻辑或 4.左移<<和>>右移这两个移位操作符
  17. arduino期末考试题
  18. 全自动化处理每月缺卡数据,输出缺卡人员信息
  19. 众恒微拓科技:品质退款率怎么优化
  20. HTML鲜花网页制作,Htlm技术设计鲜花盛开效果动态图

热门文章

  1. 深入理解计算机系统 视频教程,深入理解计算机系统1
  2. oracle走当前时间分区,Oracle分区使用波斯日历的时间间隔
  3. php8更新,PHP 8 中新特性以及重大调整
  4. python安装界面翻译_python环境搭建
  5. Linux网络故障排查命令(ifconfig、ping、telnet、netstat、lsof、nc、curl、tcpdump)
  6. 【数据结构基础应用】【顺序表】
  7. NIM的完整形式是什么?
  8. c ++查找字符串_C ++数组| 查找输出程序| 套装5
  9. 对照片进行边缘化处理,并将边缘化处理后的结果保存
  10. linux中的IO函数