汉扬编程 C语言入门 C++|面对复杂性、需求变动和可重用的设计模式

C++|面对复杂性、需求变动和可重用的设计模式

如果我们只是要建一个茅草棚,就不需要什么设计,也谈不上什么模式。

C++|面对复杂性、需求变动和可重用的设计模式

如果要建一幢多层的高楼,这是一个复杂的系统工程,就需要设计了,不同类别的设计就产生了不同的设计模式。

C++|面对复杂性、需求变动和可重用的设计模式

程序也是一样,一个hello world就不需要什么设计,自然也谈不上什么模式。

C++|面对复杂性、需求变动和可重用的设计模式

如果是一个大型的系统呢?不但要面对复杂性,还要面对客户和平台的变动,还要考虑重用,同样的,也就需要设计,自然,总结成套路就是模式了。这样,设计模式就可以实现设计重用。

C++|面对复杂性、需求变动和可重用的设计模式

编程语言学习时的矛盾就是,大部分语法机制都是为大中型系统工程准备的,但学习时做的都是玩具式的demo,由此产生的矛盾就是很难领略到为大型系统准备的语法机制。

C++|面对复杂性、需求变动和可重用的设计模式

我们知道,在建筑领域中,有所谓的预制件一说。相对于软件领域,也有库一说,包括函数库和类库。相对来说,类库自然更方便于大型系统的搭建,所以更多的,设计模式是相对于面向对象而言的。当然,也有一些人认为,面向过程的回调函数机制也可以理解为一种设计模式。

简单说,设计模式是因应较复杂、大型系统,需要考虑对象的创建、对象之间的组合与通信,而总结出的一些套路。

“设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。

1977 年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造(A Pattern Language: Towns Building Construction)中描述了一些常见的建筑设计问题,并提出了253种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。

1979 年他的另一部经典著作《建筑的永恒之道》(The Timeless Way of Building)进一步强化了设计模式的思想,为后来的建筑设计指明了方向。

1987 年,肯特·贝克(Kent Beck)和沃德·坎宁安(Ward Cunningham)首先将克里斯托夫·亚历山大的模式思想应用在 Smalltalk 中的图形用户接口的生成中,但没有引起软件界的关注。

直到 1990 年,软件工程界才开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。

1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书,在本教程中收录了 23 个设计模式,这是设计模式领域里程碑的事件,导致了软件设计模式的突破。这 4 位作者在软件开发领域里也以他们的“四人组”(Gang of Four,GoF)匿名著称。

应用设计模式的核心目标:应对变化,提高复用。

什么地方应用:寻找变化点,在变化点应用模式。

什么时间应用:一般没有一步到位的设计模式,而是重构到模式,重构技法:

静态→动态;

早绑定→晚绑定;

继承→组合;

编译时依赖→运行时依赖;

紧耦合→松耦合;

与设计模式相关的概念就是框架(Framework),框架就是一组相互协作的类,提供了可重用的公共结构的半成品(就像建筑领域一样,框架搭好了,剩下的工作就是添砖加瓦和装饰了)。对于特定的一类软件,框架构成了一种可重用的设计。框架确定后,包括系统整体结构、层次划分,不同部分之间的协作等设计考虑的体系结构也确定了。相对于设计模式,框架给出的是整个应用的体系结构,一个框架可以包含多个设计模式。设计模式则给出了单一设计问题的解决方案,并且这个方案可在不同的应用程序或者框架中进行应用。 例如C++的MFC、QT、ACE等框架产品。

提供一个优质的参考网站:

://refactoringguru.cn/

提供多种代码示例:

-End-

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/cjia/6085.html

C++编程实战入门:斐波那契(Faibonacci)数列

英国留学语言课程有哪些呢?

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部