在面向对象程序设计中,设计模式可以分为三大类,分别为creational patterns,structual patterns,behavioral patterns。creational patterns主要包括factory method;structural patterns主要包括adapter和decorator;behavior patterns主要包括stategy method,template method,iterator method和visitor method。

factory method提供了一种创建对象的最佳方式,就是让“工厂”帮你来创建对象,client只需要调用工厂中的方法即可。

在下图中,将Factory接口通过implement了Factory接口的类DogFactory来实例化,接着实例化接口factory调用它的createAnimal方法创建dog对象。

adapter模式十分简单,就是通过增加一个接口将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类。下面这个UML类图表示的很清楚,就不多说了。

decorator相对复杂一些,我想先将UML类图放在这里。

decorator的目的是为对象增加不同侧面的特性,解决方法是实现一个通用接口作为要扩展的对象,添加功能,但将主要责任委托给底层对象。说白了,就是用ConcreteDecorator来装饰ConcreteComponent,注意到Decorator和Component是组合的关系。

strategy和template模式相对简单,但是很多人分不清二者的关系。这里着重说明一下,strategy使用的是委托,而template使用的是继承+重写。下面放上UML类图让大家直观感受一下~

Strategy:

template:

iterator和visitor相信大家已经比较熟悉了,这里就不多说了。

希望大家看完之后有所收获!

【软件构造】小谈designing patterns相关推荐

  1. 软件构造——浅谈正则表达式

    正则表达式是烦琐但是强大的,可以极大的提高代码的效率,目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很 ...

  2. 【软件构造】——课程篇 高屋建瓴,从宏观角度谈软件构造

    初学软件构造,私以为是很使用的课程.大概与自身经历有很大关系.我是一名实用主义者,目前也负责着多个项目的开发工作,可以说是个初级程序猿.为此在课程学习中可能更倾向于工程友好型课程.软构可能据名解义便是 ...

  3. 哈工大18年春软件构造课程讨论题

    这是哈工大18年春软件构造课程(徐汉川老师)的讨论题目,少部分答案摘录自课件PPT和网上的资源(链接在文中给出).如有错误还望指出,谢谢. 一.在软件测试过程中,"测试用例的数目" ...

  4. 软件构造学习笔记(九)面向复用的软件构造技术

    目录链接 Part I What is Software Reuse? Part II How to measure "reusability"? Part III Levels ...

  5. 哈工大软件构造课程知识点总结(三)

    系列文章目录 哈工大软件构造课程知识点总结(一) 哈工大软件构造课程知识点总结(二) 哈工大软件构造课程知识点总结(三) 哈工大软件构造课程知识点总结(四) 哈工大软件构造课程知识点总结(五) 哈工大 ...

  6. 2021哈工大软件构造期末考点复习笔记

    第一节 多维视图和质量目标 软件构造多维度视图 红色标注为重点(考试会考选择题) Moment 特定时刻的软件形态 Period 软件形态随时间的变化 AST (Abstract Syntax Tre ...

  7. 第八章软件构造的性能——构造性能的度量、原则与方法(java中的垃圾回收机制及算法)

    这节内容真的是多到炸裂,而且全都是概念,不过很挺有用的,学完这节会对内存管理有一个比较深的理解和认识,就是--这也太多了--嘤嘤嘤T_T 1.性能度量(performance metrics) 第一点 ...

  8. 软件构造的视图与质量指标

    软件构造的实质:Transformation between different views(不同视图之间的转换) Multi-dimensional software views 按阶段分:buil ...

  9. 【软件构造】第二章 软件构建的过程和工具(2)

    二.软件构造的编程.系统.工具 [广义软件构造的过程] 1. 编程 (1)开发语言:Java.C.C++.Python等 ·IDE:集成开发环境 - 方便编写代码和管理文件 - 能够编译.构建 - 结 ...

最新文章

  1. 用计算机计算成品率计算公式,计算机专业英语+单词+部分习题.doc
  2. 组策略轻松实现软件发布,Active Directory系列之二十二
  3. 3.相应重定向与请求转发的比较
  4. 5g的八大关键指标_你对5G技术标准了解多少(干货)
  5. 基础编程题目集 6-13 折半查找 (15 分)
  6. apt-get 更新源推荐
  7. 浅谈UWB室内定位(二)_vortex_新浪博客
  8. 主成分分析法案例_机器学习理论(五)主成分分析法
  9. Flex4.0判断摄像头是否被占用
  10. ntko 发生错误:保存html到临时文件目录发生错误,ntko学习文档..doc
  11. 计算机打字怎么学笔,学电脑·非常简单:五笔打字
  12. java天猫精灵_教你玩转天猫精灵:把设备接入天猫精灵
  13. 嵌入式linux触摸屏校正命令,基于嵌入式Linux和MiniGUI的通用触摸屏校准程序
  14. php收藏影视,十个值得收藏的影视资源网站
  15. b站python_python学习 —— B站抢楼原理
  16. 时尚漂亮的充电头,苹果安卓都能用,Anker安芯充20W上手
  17. 计量经济学之格兰杰因果关系检验(Granger causality test)
  18. 智慧营区解决方案-最新全套文件
  19. 平板用什么远程操控电脑
  20. Unity城市虚拟搭建的时候,【房子】或【桥廊】跟随鼠标在【地面】或者【水面】移动

热门文章

  1. ip地址转换htonl的用法
  2. 个人开发者只要一行代码接入微信支付和支付宝支付
  3. 树枝学术 | 图书查找、论文查找全攻略
  4. 曙光服务器S640-G30配置管理口图文教程(完整版)
  5. 麒麟安全IPO过会:拟募资6.6亿 第一季营收下降40%
  6. 中国与印度软件工程师之比较
  7. 微信的营销策略你了解多少?
  8. 平面设计需要学习的软件
  9. 零信任解决方案在某医院落地实例学习记录
  10. 发酵罐设计软件测试,发酵罐设计的心得体会