设计模式之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模拟器
创建模拟器 android create avd --name avd_4.1 --target "android-16" --abi armeabi-v7a Android 4. ...
- linux一键安装vncserver脚本
title: linux一键安装vncserver脚本 date: 2016-04-11 14:32:04 tags: --- linux多数情况下是作为服务器使用的,管理员一般也喜欢使用命令行来管理 ...
- Intent 意图 结构 简介
Intent简介 官方解释: An intent is an abstract description of an operation操作 to be performed展示.表演. It can b ...
- intent-filter data Uri 意图过滤器 详解
组件的intent-filter属性 如果一个 Intent 请求在一片数据(Uri)上执行一个动作(Action), Android 如何知道哪个应用程序的哪个组件能用来响应这个请求 ...
- (转)url重写
使用URLRewriter.dll后,根本不需要使用任何代码,我之前做的项目就是用的做URL重写的,其实不是进化,其实表面上看是.html扩展名而已,当然你还可以用其他的任意扩展名下面是你的配置 &l ...
- java下载文件
/** * * @param file * @param response */ private void downLoad(File file, HttpServletResponse respon ...
- 获取GET/POST提交的数据,并处理中文问题
1.获取input标签中的值,用request.getParameter("User")(User为input的name值) 2. 获取checkbox的值,由于是多选的,所以不能 ...
- Quick Sort In-place Implementation
在线运行PHP http://www.compileonline.com/execute_php_online.php <?php function swap( &$a, &$b ...
- 创建C#DLL
1. 创建classlibrary 2.编写一个COM接口和一个COM类 [Guid("DBE0E8C4-1C61-41f3-B6A4-4E2F353D3D05")] public ...
- C程序设计语言练习题1-7
练习1-7 编写一个打印EOF的值的程序. #include <stdio.h> // 包含标准库的信息. int main() // 定义名为main的函数,它不接受参数值. { // ...