【软件构造】小谈designing patterns
在面向对象程序设计中,设计模式可以分为三大类,分别为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相关推荐
- 软件构造——浅谈正则表达式
正则表达式是烦琐但是强大的,可以极大的提高代码的效率,目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很 ...
- 【软件构造】——课程篇 高屋建瓴,从宏观角度谈软件构造
初学软件构造,私以为是很使用的课程.大概与自身经历有很大关系.我是一名实用主义者,目前也负责着多个项目的开发工作,可以说是个初级程序猿.为此在课程学习中可能更倾向于工程友好型课程.软构可能据名解义便是 ...
- 哈工大18年春软件构造课程讨论题
这是哈工大18年春软件构造课程(徐汉川老师)的讨论题目,少部分答案摘录自课件PPT和网上的资源(链接在文中给出).如有错误还望指出,谢谢. 一.在软件测试过程中,"测试用例的数目" ...
- 软件构造学习笔记(九)面向复用的软件构造技术
目录链接 Part I What is Software Reuse? Part II How to measure "reusability"? Part III Levels ...
- 哈工大软件构造课程知识点总结(三)
系列文章目录 哈工大软件构造课程知识点总结(一) 哈工大软件构造课程知识点总结(二) 哈工大软件构造课程知识点总结(三) 哈工大软件构造课程知识点总结(四) 哈工大软件构造课程知识点总结(五) 哈工大 ...
- 2021哈工大软件构造期末考点复习笔记
第一节 多维视图和质量目标 软件构造多维度视图 红色标注为重点(考试会考选择题) Moment 特定时刻的软件形态 Period 软件形态随时间的变化 AST (Abstract Syntax Tre ...
- 第八章软件构造的性能——构造性能的度量、原则与方法(java中的垃圾回收机制及算法)
这节内容真的是多到炸裂,而且全都是概念,不过很挺有用的,学完这节会对内存管理有一个比较深的理解和认识,就是--这也太多了--嘤嘤嘤T_T 1.性能度量(performance metrics) 第一点 ...
- 软件构造的视图与质量指标
软件构造的实质:Transformation between different views(不同视图之间的转换) Multi-dimensional software views 按阶段分:buil ...
- 【软件构造】第二章 软件构建的过程和工具(2)
二.软件构造的编程.系统.工具 [广义软件构造的过程] 1. 编程 (1)开发语言:Java.C.C++.Python等 ·IDE:集成开发环境 - 方便编写代码和管理文件 - 能够编译.构建 - 结 ...
最新文章
- 用计算机计算成品率计算公式,计算机专业英语+单词+部分习题.doc
- 组策略轻松实现软件发布,Active Directory系列之二十二
- 3.相应重定向与请求转发的比较
- 5g的八大关键指标_你对5G技术标准了解多少(干货)
- 基础编程题目集 6-13 折半查找 (15 分)
- apt-get 更新源推荐
- 浅谈UWB室内定位(二)_vortex_新浪博客
- 主成分分析法案例_机器学习理论(五)主成分分析法
- Flex4.0判断摄像头是否被占用
- ntko 发生错误:保存html到临时文件目录发生错误,ntko学习文档..doc
- 计算机打字怎么学笔,学电脑·非常简单:五笔打字
- java天猫精灵_教你玩转天猫精灵:把设备接入天猫精灵
- 嵌入式linux触摸屏校正命令,基于嵌入式Linux和MiniGUI的通用触摸屏校准程序
- php收藏影视,十个值得收藏的影视资源网站
- b站python_python学习 —— B站抢楼原理
- 时尚漂亮的充电头,苹果安卓都能用,Anker安芯充20W上手
- 计量经济学之格兰杰因果关系检验(Granger causality test)
- 智慧营区解决方案-最新全套文件
- 平板用什么远程操控电脑
- Unity城市虚拟搭建的时候,【房子】或【桥廊】跟随鼠标在【地面】或者【水面】移动