设计模式之Application Programs and Toolkits
Application Programs 应用程序
If you're building an application programsuch as a document editor or spreadsheet, then internal reuse, maintainability, andextension are high priorities. Internal reuse ensures that you don't design andimplement any more than you have to. Design patterns that reduce dependencies canincrease internal reuse. Looser coupling boosts the likelihood that one class ofobject can cooperate with several others.For example, when you eliminatedependencies on specific operations by isolatingand encapsulating each operation, you makeit easier to reuse an operation in different contexts. The same thing canhappen when you remove algorithmic and
representational dependencies too.
如果你建立了一个应用程序比如说文本编辑或电子数据表,然后内部重用,可维护性和 扩展是高优先级。内部重用保证你不需要再一次设计和实现已经有的内容,设计模式就是减少依赖来增加内部重用。松耦合性提高增强了几个人合作来做一类对象的可能性。例如,当你通过使用孤立或者封装的运算,淘汰了使用依赖性很强的运算,在不同的文件中就可以很容易的重用运算,当你移除算法和有代表性的依存关系的时候,你都可以做和上面类似的事情。
Design patterns also make an application more maintainable when they're used to limit platform dependencies and to layer a system. They enhance extensibility by showing you how to extend class hierarchies and how to exploit object composition. Reduced coupling also enhances extensibility. Extending a class in isolation is easier if the class doesn't depend on lots of other classes.
当你用有限制的平台并且分层放置一个系统,设计模式就会使应用的可维护性增强。扩展类的继承和利用类的组合会提高其扩展性。减少链接也会提高类的可扩展性。
如果一个类不依靠大量其他的类,扩展一个孤立的类是很容易的。
Toolkits 工具包
Often an application will incorporateclasses from one or more libraries ofpredefined classes called toolkits. Atoolkit is a set of related and reusable classes designed to provide useful,general-purpose functionality. An example of a toolkit is a set of collection classesfor lists, associative tables, stacks,and the like. The C++ I/O stream library isanother example. Toolkits don't impose a particular design on your application;they just provide functionality that can help your application do its job. Theylet you as an implementer avoid recoding
common functionality. Toolkits emphasize code reuse. They are the object-oriented equivalent of subroutine libraries.
经常性的,应用会调用工具包中一个或更多库中预定义的类。工具包是和重用、通用功能的相关并且重用类设计会提供这些重用、通用功能。举个简单的例子工具包是一套包含链表类、关联表和栈等等像这样的类的集合。C++ I/O流库是工具包的另一个例子。在应用中,工具包不能强加特别的设计;它们只是提供了帮助你应用工作的功能。它们只是帮助你避免重新编写普遍的实现。工具包强调的是代码的重用,它们是面向对象的子程序库。
Toolkit design is arguably harder than application design, because toolkits have to work in many applications to be useful.Moreover, the toolkit writer isn't in a position to know what those applications will be or their special needs. That makes it all the more important toavoid assumptions and dependencies that can limit the toolkit's flexibility and consequently its applicability andeffectiveness.
工具设计可以认为难于应用设计,因为在应用中工具包会起效。更多的是,工具不是在应用需要或特殊的位置编写。这些使避免承担和依赖变得很重要,可以限制工具包的灵活性,应用性和有效性。
设计模式之Application Programs and Toolkits的更多相关文章
- writing concurrent programs
Computer Systems A Programmer's Perspective Second Edition To this point in our study of computer sy ...
- Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization
A code sequence made up multiple instructions and specifying an offset from a base address is identi ...
- Application binary interface and method of interfacing binary application program to digital computer
An application binary interface includes linkage structures for interfacing a binary application pro ...
- C++开源库集合
| Main | Site Index | Download | mimetic A free/GPL C++ MIME Library mimetic is a free/GPL Email lib ...
- Computer Networking: A Top Down Approach
目录 Chapter 1: Computer Networks and the Internet 1. What is the Internet? 2. The Network Edge 3. The ...
- Computer Neworking: A Top-Down Approach
目录 Chapter 1: Computer Networks and the Internet 1. What is the Internet? 2. The Network Edge 3. The ...
- 极客时间-左耳听风-程序员攻略-异步I/O模型和Lock-Free编程
异步 I/O 模型 异步 I/O 模型其中的设计模式或是解决方法可以借鉴到分布式架构上来. 史蒂文斯(Stevens)在<UNIX 网络编程>一书 6.2 I/O Models 中介绍了五 ...
- Introduction to Sound Programming with ALSA
ALSA stands for the Advanced Linux Sound Architecture. It consists of a set of kernel drivers, an ap ...
- software engineer's resume(帮助你写程序员简历)
关键词 参考 简历模板 参考 下面开始是正文(关键词原文) 介绍 本项目由海外兔 (https://osjobs.net) 维护,海外兔团队由一线互联网面试官组成,提供海内外公司一对一入职套餐以及算法 ...
随机推荐
- Android 属性动画(一)
1.概述 Android提供了几种动画类型:View Animation .Drawable Animation .Property Animation .View Animation相当简单,不过只 ...
- MVC,jquery异步
创建一个Ajax控制器 using System; using System.Collections.Generic; using System.Linq; using System.Web; usi ...
- JS 无提示关闭当前窗口
function teseClose() { window.opener = null; window.open('','_self'); window.close(); }
- SSAS数据集Cube不存在或者尚未处理
对Microsoft SQL Server(2008) Analysis Services(以下称SSAS) 多维数据集运行多维表达式 (MDX) 查询时,会返回这个错误消息:XXX Cube不存在, ...
- AD DIV 层的知识 和 行为特效
1.AP(绝对定位) 2.使用AP DIV层和表格结合起来完美布局网页 3.层的Z轴值越大,该层就位于比较顶的位置 4.层有可见性的属性,层溢出,层的裁剪, 5层嵌套,先把光标定位在外层里面,然后拖多 ...
- php提取身份证号码中的生日日期以及验证是否为未成年人的函数
php 提取身份证号码中的生日日期以及确定是否成年的一个函数.可以同时确定15位和18位的身份证,经本人亲测,非常好用,分享函数代码如下: <?php //用php从身份证中提取生日,包括15位 ...
- php对象中类的继承性访问类型控制
类型的访问控制通过使用修饰符允许开发人员对类中成员的访问进行限制.这是PHP5的新特性,也是OOP语言中的重要特性,大多数OOP语言都已支持此特性.PHP5支持如下三种访问修饰符,在类的封装中我们已经 ...
- MongoDB学习笔记--基本命令
转自:http://www.cnblogs.com/xusir/archive/2012/12/24/2830957.html 数据库文件默认位置 /var/lib/mongodb 成功启动Mongo ...
- Oracle 存储过程,临时表,动态SQL测试
--创建事务级别的结果临时表 create global temporary table tmp_yshy( c1 ), c2 ) )on commit delete rows; --创建事务级别的存 ...
- 局域网架个YUM源-HTTP的
在安装CDH时,这是个绕不过去的坎. 参考URL: http://www.21ops.com/linux/26465.html 奇怪的是,我并没执行creatrepo这个,直接将光盘MOUNT来用的. ...