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的更多相关文章

  1. writing concurrent programs

    Computer Systems A Programmer's Perspective Second Edition To this point in our study of computer sy ...

  2. 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 ...

  3. 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 ...

  4. C++开源库集合

    | Main | Site Index | Download | mimetic A free/GPL C++ MIME Library mimetic is a free/GPL Email lib ...

  5. Computer Networking: A Top Down Approach

    目录 Chapter 1: Computer Networks and the Internet 1. What is the Internet? 2. The Network Edge 3. The ...

  6. Computer Neworking: A Top-Down Approach

    目录 Chapter 1: Computer Networks and the Internet 1. What is the Internet? 2. The Network Edge 3. The ...

  7. 极客时间-左耳听风-程序员攻略-异步I/O模型和Lock-Free编程

    异步 I/O 模型 异步 I/O 模型其中的设计模式或是解决方法可以借鉴到分布式架构上来. 史蒂文斯(Stevens)在<UNIX 网络编程>一书 6.2 I/O Models 中介绍了五 ...

  8. Introduction to Sound Programming with ALSA

    ALSA stands for the Advanced Linux Sound Architecture. It consists of a set of kernel drivers, an ap ...

  9. software engineer's resume(帮助你写程序员简历)

    关键词 参考 简历模板 参考 下面开始是正文(关键词原文) 介绍 本项目由海外兔 (https://osjobs.net) 维护,海外兔团队由一线互联网面试官组成,提供海内外公司一对一入职套餐以及算法 ...

随机推荐

  1. iOS避免键盘遮挡输入方案

    项目中经常会遇到这样的问题:一个tableView中有大量的textField,当点击屏幕底部的textfield时,由于键盘弹出挡住了textfield输入框里的内容,造成很差的用户体验,如下图,点 ...

  2. SQL Server中的临时表和表变量 Declare @Tablename Table

    在SQL Server的性能调优中,有一个不可比面的问题:那就是如何在一段需要长时间的代码或被频繁调用的代码中处理临时数据集?表变量和临时表是两种选择.记得在给一家国内首屈一指的海运公司作SQL Se ...

  3. ios9基础知识总结(foundation)笔记

    类:NSObject .NSString.NSMutableString.NSNumber.NSValue.NSDate.NSDateFormatter.NSRange.Collections:NSS ...

  4. Swift 变量、常量、数据类型

    import Foundation print("HelloSwift") // 声明变量 var a = var b = a = b = // 常量 let c = a+b va ...

  5. 禁止chrome中CORS跨域资源共享错误

    在开发中,可以通过命令行命令chrome --allow-file-access-from-files来 禁止CORS错误. 只在紧急情况下使用这个方法,比如你的老板正站在你身后, 并且所有事情都无法 ...

  6. [转载]C++ 堆与栈简单的介绍

    在C和C++中,有三种使用存储区的基本方式: [静态存储区(Static   Memory)] 在静态存储区中,连接器(linker)根据程序的需求为对象分配空间.全局变量.静态类成员以及函数中的静态 ...

  7. 使用Jquery解决Asp.Net中下拉列表值改变后访问服务器刷新界面。

    使用DropDownList控件时,改变选项时,获取服务端数据库数据并刷新界面数据. 1. 绑定DropDownList控件SelectedIndexChanged事件. 2. AutoPortBac ...

  8. 手把手教你js原生瀑布流效果实现

    手把手教你js原生瀑布流效果实现 什么是瀑布流效果 首先,让我们先看一段动画: 在动画中,我们不难发现,这个动画有以下特点: 1.所有的图片的宽度都是一样的 2.所有的图片的高度是不一样的 3.图片一 ...

  9. C程序设计语言练习题1-5

    练习1-5 修改温度转换程序,要求以逆序(即按照从300度到0度的顺序)打印温度转换表. 代码如下: #include <stdio.h> // 包含标准库的信息. int main() ...

  10. C语言初学 比较五个整数并输出最大值和最小值1

    #include<stdio.h> #include<math.h> int max(int x,int y) { if(x>y) return x; else retu ...