- 博客(25)
- 资源 (25)
- 收藏
- 关注
转载 扩展系统功能——装饰模式(四):透明与半透明装饰模式,装饰模式注意事项,装饰模式总结
12.4 透明装饰模式与半透明装饰模式 装饰模式虽好,但存在一个问题。如果客户端希望单独调用具体装饰类新增的方法,而不想通过抽象构件中声明的方法来调用新增方法时将遇到一些麻烦,我们通过一个实例来对这种情况加以说明:在Sunny软件公司开发的Sunny OA系统中,采购单(PurchaseRequest)和请假条(LeaveRequest)等文件(Documen
2015-09-13 12:10:33 4392 2
转载 扩展系统功能——装饰模式(三):图形界面构件库的装饰模式解决方案
12.3 完整解决方案 为了让系统具有更好的灵活性和可扩展性,克服继承复用所带来的问题,Sunny公司开发人员使用装饰模式来重构图形界面构件库的设计,其中部分类的基本结构如图12-4所示:图12-4 图形界面构件库结构图 在图12-4中,Component充当抽象构件类,其子类Window、TextBox、ListBox充当具体构件类,Component类
2015-09-13 10:46:27 1056
转载 扩展系统功能——装饰模式(二):装饰模式概述
12.2 装饰模式概述 装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为,在现实生活中,这种情况也到处存在,例如一张照片,我们可以不改变照片本身,给它增加一个相框,使得它具有防潮的功能,而且用户可以根据需要给它增加不同类型的相框,甚至可以在一个小相框的外面再套一个大相框。 装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职
2015-09-13 10:34:11 736
转载 扩展系统功能——装饰模式(一):图形界面构件库的设计
尽管目前房价依旧很高,但还是阻止不了大家对新房的渴望和买房的热情。如果大家买的是毛坯房,无疑还有一项艰巨的任务要面对,那就是装修。对新房进行装修并没有改变房屋用于居住的本质,但它可以让房子变得更漂亮、更温馨、更实用、更能满足居家的需求。在软件设计中,我们也有一种类似新房装修的技术可以对已有对象(新房)的功能进行扩展(装修),以获得更加符合用户需求的对象,使得对象具有更加强大的功能。这种技术对应于一
2015-09-13 10:11:44 2114
转载 建造者模式(三):关于Director的进一步讨论,建造者模式总结
8.4 关于Director的进一步讨论 指挥者类Director在建造者模式中扮演非常重要的作用,简单的Director类用于指导具体建造者如何构建产品,它按一定次序调用Builder的buildPartX()方法,控制调用的先后次序,并向客户端返回一个完整的产品对象。下面我们讨论几种Director的高级应用方式: 1.省略Director 在
2015-09-12 20:55:41 2353
转载 建造者模式(二):游戏角色设计的建造者模式解决方案
8.3完整解决方案 Sunny公司开发人员决定使用建造者模式来实现游戏角色的创建,其基本结构如图8-3所示:图8-3 游戏角色创建结构图 在图8-3中,ActorController充当指挥者,ActorBuilder充当抽象建造者,HeroBuilder、AngelBuilder和DevilBuilder充当具体建造者,Actor充当复杂产品。完整代码如下所示
2015-09-12 20:40:00 3687
转载 复杂对象的组装与创建——建造者模式(一):游戏角色设计,建造者模式概述
没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组装成一辆完整的汽车并返回给用户,这是建造者模式需要解决的问题。建造者模式又称为生成器模式,它是一种较为复杂、使用频率也相对较低的创建型模式。建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。8.1游戏角色设计Sunny软件公司游戏
2015-09-12 20:21:56 1627
转载 职责链模式(四):纯与不纯的职责链模式,职责链模式总结
16.4 纯与不纯的职责链模式 职责链模式可分为纯的职责链模式和不纯的职责链模式两种: (1)纯的职责链模式 一个纯的职责链模式要求一个具体处理者对象只能在两个行为中选择一个:要么承担全部责任,要么将责任推给下家,不允许出现某一个具体处理者对象在承担了一部分或全部责任后又将责任向下传递的情况。而且在纯的职责链模式中,要求一个请求必须被某一个处理
2015-09-07 18:34:30 1202
转载 职责链模式(三):采购单分级审批的职责链模式解决方案
16.3 完整解决方案 为了让采购单的审批流程更加灵活,并实现采购单的链式传递和处理,Sunny公司开发人员使用职责链模式来实现采购单的分级审批,其基本结构如图16-3所示: 在图16-3中,抽象类Approver充当抽象处理者(抽象传递者),Director、VicePresident、President和Congress充当具体处理者(具体传递者),Purch
2015-09-07 18:18:37 1646
转载 职责链模式(二):职责链模式概述
16.2 职责链模式概述 很多情况下,在一个软件系统中可以处理某个请求的对象不止一个,例如SCM系统中的采购单审批,主任、副董事长、董事长和董事会都可以处理采购单,他们可以构成一条处理采购单的链式结构,采购单沿着这条链进行传递,这条链就称为职责链。职责链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求。链上的每一个对象都是请求处理者,职责链
2015-09-07 18:04:17 617
转载 职责链模式(一):采购单的分级审批
“对二”,“过”,“过”……这声音熟悉吗?你会想到什么?对!纸牌。在类似“斗地主”这样的纸牌游戏中,某人出牌给他的下家,下家看看手中的牌,如果要不起上家的牌则将出牌请求再转发给他的下家,其下家再进行判断。一个循环下来,如果其他人都要不起该牌,则最初的出牌者可以打出新的牌。在这个过程中,牌作为一个请求沿着一条链在传递,每一位纸牌的玩家都可以处理该请求。在设计模式中,我们也有一种专门用于处理这种请求链
2015-09-07 17:53:45 3117
转载 TCP-IP协议详解(11) 涅槃 (TCP重新发送)
TCP协议是一个可靠的协议。它通过重新发送(retransmission)来实现TCP片段传输的可靠性。简单的说,TCP会不断重复发送TCP片段,直到片段被正确接收。TCP片段丢失 TCP头部的checksum接收方(receiver)可以通过校验TCP片段头部中checksum区域来检验TCP片段是否出错。我们已经接触过了IP协议详解的checksum算法。TCP片段的check
2015-09-07 16:28:35 751
转载 TCP-IP协议详解(10) 魔鬼细节 (TCP滑窗管理)
在阅读“TCP-IP协议详解”系列文章之前,建议阅读以下两篇文章,以便对互联网协议有个快速的全局了解和把握!互联网协议入门(一)互联网协议入门(二)在TCP协议与”流”通信中,我们建立了滑窗(sliding window)的基本概念。通过滑窗与ACK的配合,我们一方面实现了TCP传输的可靠性,另一方面也一定程度上提高了效率。其工作方式如下面的视频所示:视频链接: http:
2015-09-07 16:15:30 763
转载 迭代器模式(六):迭代器模式总结
6 迭代器模式总结 迭代器模式是一种使用频率非常高的设计模式,通过引入迭代器可以将数据的遍历功能从聚合对象中分离出来,聚合对象只负责存储数据,而遍历数据由迭代器来完成。由于很多编程语言的类库都已经实现了迭代器模式,因此在实际开发中,我们只需要直接使用Java等语言已定义好的迭代器即可,迭代器已经成为我们操作聚合对象的基本工具之一。 1.主要优点
2015-09-03 22:21:21 789
转载 迭代器模式(五):JDK内置迭代器的使用
5 JDK内置迭代器 为了让开发人员能够更加方便地操作聚合对象,在Java等编程语言中都提供了内置迭代器。在Java集合框架中,常用的List和Set等聚合类都继承(或实现)了java.util.Collection接口,在Collection接口中声明了如下方法(部分):[java] view plaincopypackage java.util;
2015-09-03 22:14:44 2091
转载 迭代器模式(四):使用内部类实现迭代器
4 使用内部类实现迭代器 在迭代器模式结构图中,我们可以看到具体迭代器类和具体聚合类之间存在双重关系,其中一个关系为关联关系,在具体迭代器中需要维持一个对具体聚合对象的引用,该关联关系的目的是访问存储在聚合对象中的数据,以便迭代器能够对这些数据进行遍历操作。 除了使用关联关系外,为了能够让迭代器可以访问到聚合对象中的数据,我们还可以将迭代器类设计为聚合类的内部类,J
2015-09-03 21:56:29 924
转载 迭代器模式(三):销售管理系统中数据的遍历的迭代器模式解决方案
3 完整解决方案 为了简化AbstractObjectList类的结构,并给不同的具体数据集合类提供不同的遍历方式,Sunny软件公司开发人员使用迭代器模式来重构AbstractObjectList类的设计,重构之后的销售管理系统数据遍历结构如图4所示:图4销售管理系统数据遍历结构图(注:为了简化类图和代码,本结构图中只提供一个具体聚合类和具体迭代器类)
2015-09-03 17:55:45 1660
转载 迭代器模式(二):迭代器模式概述
2 迭代器模式概述 在软件开发中,我们经常需要使用聚合对象来存储一系列数据。聚合对象拥有两个职责:一是存储数据;二是遍历数据。从依赖性来看,前者是聚合对象的基本职责;而后者既是可变化的,又是可分离的。因此,可以将遍历数据的行为从聚合对象中分离出来,封装在一个被称之为“迭代器”的对象中,由迭代器来提供遍历聚合对象内部数据的行为,这将简化聚合对象的设计,更符合“单一职责原则”的要求。
2015-09-03 17:42:07 909
转载 迭代器模式(一):销售管理系统中数据的遍历
20世纪80年代,那时我家有一台“古老的”电视机,牌子我忘了,只记得是台黑白电视机,没有遥控器,每次开关机或者换台都需要通过电视机上面的那些按钮来完成,我印象最深的是那个用来换台的按钮,需要亲自用手去旋转(还要使点劲才能拧动),每转一下就“啪”的响一声,如果没有收到任何电视频道就会出现一片让人眼花的雪花点。当然,电视机上面那两根可以前后左右移动,并能够变长变短的天线也是当年电视机的标志性部件之一,
2015-09-03 16:57:00 1961
转载 代理模式之cglib动态代理
cglib动态代理一、原理 代理为控制要访问的目标对象提供了一种途径。当访问对象时,它引入了一个间接的层。JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创建代理。JDK的动态代理用起来简单,但它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理没有实现接口的继承的类,该怎么办?现在我们可以使用CGLIB包。二、什么是
2015-09-02 21:48:32 734
原创 代理模式(五)JDK动态代理深入分析
JDK动态代理实现的核心技术是java反射机制,其主要的两个类是:Proxy、InvocationHandler。使用java.lang.reflect.Proxy类可以动态实现接口作为代理类。一. Creating Proxies使用Proxy.newProxyInstance()方法创建动态代理类,方法定义:
2015-09-02 18:18:09 2564
转载 代理模式(四):代理模式效果与适用场景
15.7 代理模式效果与适用场景 代理模式是常用的结构型设计模式之一,它为对象的间接访问提供了一个解决方案,可以对对象的访问进行控制。代理模式类型较多,其中远程代理、虚拟代理、保护代理等在软件开发中应用非常广泛。 15.7.1 模式优点 代理模式的共同优点如下: (1)能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。
2015-09-01 15:43:27 2605
转载 代理模式(三):远程代理,虚拟代理,缓冲代理
15.4 远程代理 远程代理(Remote Proxy)是一种常用的代理模式,它使得客户端程序可以访问在远程主机上的对象,远程主机可能具有更好的计算性能与处理速度,可以快速响应并处理客户端的请求。远程代理可以将网络的细节隐藏起来,使得客户端不必考虑网络的存在。客户端完全可以认为被代理的远程业务对象是在本地而不是在远程,而远程代理对象承担了大部分的网络通信工作,并负责对远程业务方法的调
2015-09-01 15:25:00 2360
转载 代理模式(二):代理模式应用实例(收费商务信息查询系统)
15.3 代理模式应用实例 下面通过一个应用实例来进一步学习和理解代理模式。 1.实例说明 某软件公司承接了某信息咨询公司的收费商务信息查询系统的开发任务,该系统的基本需求如下: (1)在进行商务信息查询之前用户需要通过身份验证,只有合法用户才能够使用该查询系统; (2)在进行商务信息查询时
2015-09-01 15:03:03 1944
转载 代理模式(一):代理模式概述,代理模式结构与实现
代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求。 15.1 代理模式概述 近年来,代购已
2015-09-01 14:06:35 1413
我国网上零售市场现状及影响因素研究
2022-07-04
基于主成分分析的江苏省城市竞争力研究
2022-07-04
智能医学平台创业商业计划书
2022-07-01
研究资讯 _ 应用视角 _ 人工智能在医学影像领域的应用
2022-06-29
北邮-计算机软件基础实验-全套 Python 代码
2022-06-21
SE305 数据库技术-Database System Technology-全套 PPT 课件-作业
2022-06-21
EI374 高级算法-全套 PPT 课件-笔记
2022-06-21
EI339 人工智能-ARTIFICIAL INTELLIGENCE-全套 PPT 课件
2022-06-21
EI338 计算机系统工程-Computer Systems Engineering-全套 PPT 课件
2022-06-21
EI333 软件工程-Software Engineering-全套 PPT 课件
2022-06-21
EI332计算机组成原理-Computer Organization and Application-全套 PPT课件
2022-06-21
EI331 信号与系统-Signals and Systems-全套 PPT 课件
2022-06-21
CS385 机器学习-全套 PPT 课件-作业
2022-06-21
CS258 信息论-Information Theory-全套 PPT 课件
2022-06-21
CS222 算法分析与设计-ALGORITHM DESIGN AND ANALYSIS-全套 PPT 课件
2022-06-21
CS221 数据结构-全套 PPT 课件
2022-06-21
CS125 程序设计-程序设计思想与方法-全套PPT
2022-06-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人