暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
JAVA第16章 设计范式.pdf
195
18页
0次
2021-02-22
50墨值下载
16
设计范式
本章要向大家介绍重要但却并不是那么传统的“范式”
Pattern
程序设计方
法。
在向面向对象程序设计的演化过程中,或许最重要的一步就是“设计范式”
Design Pattern
Gamma
Helm
Johnson
Design
Patterns
》一书中被定义成一个“里程碑”(该书
Addison-Wesley
1995
年出
版,注释①)那本书列出了解决这个问题的
23
种不同的方法。在本章中,我们
备伴子揭范式的基或许阅读
Design
Pattern
》一书的欲望。事实上,那本书现在已成为几乎所有
OOP
程序员都必备
的参考书。
①:但警告大家:书中的例子是用
C++
写的。
本章的后一部分包含了展示设计进化过程的一个例子,首先是比较原始的方
案,经过逐渐发展和改进,慢慢成为更符合逻辑、更为恰当的设计。该程序(仿
真垃圾分类)一直都在进化,可将这种进化作为自己设计方案的一个原型——先
为特定的问题提出一个适当的方案,再逐步改善,使其成为解决那类问题一种最
灵活的方案。
16.1
范式的概念
在最开始,可将范式想象成一种特别聪明、能够自我适应的手法,它可以解
决特定类型的问题。也就是说,它类似一些需要全面认识某个问题的人。在了解
了问题的方方面面以后,最后提出一套最通用、最灵活的解决方案。具体问题或
许是以前见到并解决过的。然而,从前的方案也许并不是最完善的,大家会看到
它如何在一个范式里具体表达出来。
尽管我们称之为“设计范式”但它们实际上并不局限于设计领域。思考“范
式”时,应脱离传统意义上分析、设计以及实施的思考方式。相反“范式”是
在一个程序里具体表达一套完整的思想,所以它有时可能出现在分析阶段或者高
级设计阶段。这一点是非常有趣的,因为范式具有以代码形式直接实现的形式,
所以可能不希望它在低级设计或者具体实施以前显露出来(而且事实上,除非真
正进入那些阶段,否则一般意识不到自己需要一个范式来解决问题)
范式的基本概念亦可看成是程序设计的基本概念:添加一层新的抽象!只要
我们抽象了某些东西,就相当于隔离了特定的细节。而且这后面最引人注目的动
机就是“将保持不变的东西身上发生的变化孤立出来”。这样做的另一个原因是
一旦发现程序的某部分由于这样或那样的原因可能发生变化,我们一般都想防止
那些改变在代码内部繁衍出其他变化。这样做不仅可以降低代码的维护代价,
更便于我们理解(结果同样是降低开销)
为设计出功能强大且易于维护的应用项目,通常最困难的部分就是找出我称
之为“领头变化”的东西。这意味着需要找出造成系统改变的最重要的东西,
者换一个角度,找出付出代价最高、开销最大的那一部分。一旦发现了“领头变
化”,就可以为自己定下一个焦点,围绕它展开自己的设计。
所以设计范式的最终目标就是将代码中变化的内容隔离开。如果从这个角度
观察,就会发现本书实际已采用了一些设计范式。举个例子来说,继承可以想象
成一种设计范式(类似一个由编译器实现的)。在都拥有同样接口(即保持不变
的东西)的对象内部,它允许我们表达行为上的差异(即发生变化的东西)。合
成亦可想象成一种范式,因为它允许我们修改——动态或静态——用于实现类的
对象,所以也能修改类的运作方式。
Design Patterns
一书中,大家还能看到另一种范式:“继承器”
Iterator
Java 1.0
1.1
不负责任地把它叫作
Enumeration
,即“枚举
Java1.2
的集合则
改回了“继承器”的称呼)。当我们在集合里遍历,逐个选择不同的元素时,继
承器可将集合的实施细节有效地隐藏起来。利用继承器,可以编写出通用的代码,
以便对一个序列里的所有元素采取某种操作,同时不必关心这个序列是如何构建
的。这样一来,我们的通用代码即可伴随任何能产生继承器的集合使用。
16.1.1
单子
或许最简单的设计范式就是“单子”
Singleton
,它能提供对象的一个(而
且只有一个)实例。单子
Java
库中得到了应用,但下面这个例子显得更直接
一些:
909-910
页程序
建单客户员采之外
方式来创建一个对象。必须将所有构建器都设为
private
(私有),而且至少要
建一个构建器,以防止编译器帮我们自动同步一个默认构建器(它会自做聪明地
创建成为“友好的”——
friendly
,而非
private
此时应决定如何创建自己的对象。在这儿,我们选择了静态创建的方式。
亦可选择等候客户程序员发出一个创建请求,然后根据他们的要求动态创建。
of 18
50墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜