设计模式之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) 维护,海外兔团队由一线互联网面试官组成,提供海内外公司一对一入职套餐以及算法 ...
随机推荐
- Dynamics CRM记录页面上隐藏子网格“+”标识
前段时间微软发布了Dynamics 365,这是Dynamics产品的又一次大的变动,期待新的版本能够更好的满足客户的需求,同时提供更多的可定制化的内容. 近期做Dynamics CRM项目遇到很多审 ...
- Android学习笔记之viewholder
在adapter中通过使用静态内部类(viewholder)缓存组件的引用来防止ListView刷新时重新LayoutInflater跟findViewById从而达到优化的目的.示例如下: @Ove ...
- Python:ajax 学习笔记
什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味 ...
- Android/Linux boot time优化
基于analyze_boot.py分析Android/Linux的kernel boot时间 1.修改HiKey的BoardConfig.mk文件,使能initcall_debug,增加dmesg b ...
- DataGrid( 数据表格) 组件[4]
本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...
- C#6.0语法糖
using System; using static System.Math;//using static,仅仅引入类中的静态方法 namespace _6._0Syntax { class Prog ...
- (转)passwordStrength 基于jquery的密码强度检测代码使用介绍
使用很简单. 代码如下: $('#pass').passwordStrength(); XHTML 代码如下: <p><label>请输入密码:</label> ...
- [c#]asp.net开发微信公众平台(7)前6篇的整体框架demo源码
这里给出的demo是具备整体框架的微信公众平台源码, 所谓demo就是拿过去就可以直接演示使用的东西, 当然不会具备非常详细的具体到业务层面.数据层面的东西, 每个人都可以在此基础上自由发挥, 只 ...
- Sql省市三级联动一张表
CREATE TABLE [dbo].[region]( [region_id] [int] NULL, [region_name] [varchar](50) COLLATE Chinese_PRC ...
- uva 10609 - Fractal
题目大意:给出A,B两个点的坐标,以及T,每次找到A.B的四等分点C,D,然后以AB/2为边长,C,D为顶点,构建一个等边三角形,E为另外一个顶点,然后再对C,E:E,D做同样的操作,直到构建的等边三 ...