自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘伟技术博客

专注软件架构、设计模式、重构、UML和OOAD!

  • 博客(25)
  • 收藏
  • 关注

原创 历年系统架构设计师考试之设计模式试题分析-2010年

2010年系统架构设计师考试在2009年的基础上增加了一道设计模式考题,Sunny友情建议:大家可以先做做这些试题,看是否能够正确解答,如果在解答的同时还能够拿出具体的设计和实现方案,我相信一定会受益匪浅!,试题分析和参考答案为Sunny个人所作,可能跟某些已发布的“标准答案”会有所不同,如有不同意见,欢迎与我交流!【说明:为了体现试题的真实性,每一道试题的题号均保留原始真题题号】       真

2013-01-30 23:27:14 7581

原创 历年系统架构设计师考试之设计模式试题分析-2009年

作为全国计算机技术与软件专业技术资格(水平)考试高级级别之一的系统架构设计师从2009年下半年开考。在历年系统架构设计师,都包含了一定数量的设计模式试题,而且呈现逐年增加的趋势,在2012年下半年的系统架构设计师的考试中包含了一道25分的大题。Sunny参加了2009年11月份的首次系统架构设计师考试,很幸运地以湖南省第一名、全国第四名的成绩成为了第一批国家认证的系统架构设计师,。纵观每年系统架构

2013-01-28 00:42:43 8277 3

原创 设计模式与软考试题之职责链模式

2007年下半年软件设计师考试下午试题最后一题考查职责链模式(责任链模式),原题如下: 【全国计算机技术与软件专业技术资格(水平)考试 2007年下半年 软件设计师 下午试卷】注:当年试题五、试题六和试题七三选一,试题六为C++版,试题七为Java版。 试题六       阅读以下说明和 C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】       已知某企业的采购审批是分级进

2013-01-26 23:52:39 6548 2

原创 组件设计原则之概念篇(四)

稳定抽象原则SAP是六个组件设计原则中的最后一个,它通常与稳定依赖原则SDP结合在一起,用于创建具有较高质量的组件依赖结构。终于是最后一个了,。 稳定抽象原则(The Stable-Abstractions Principle, SAP)A component should be as abstract as it is stable.组件的抽象程度应该与其稳定程度一致。       SAP将组件

2013-01-26 01:15:11 10312 5

原创 组件设计原则之概念篇(三)

最后两个组件设计原则将会结合软件度量来进行介绍,将引入一些软件度量因子,对组件设计进行定量的分析与研究。 稳定依赖原则(The Stable-Dependencies Principle, SDP)Depend in the direction of stability.朝着稳定的方向进行依赖。 稳定性与依赖性       随着需求的明确和系统的演化,组件不可能一成不变,必要的修改是肯定的。根据前

2013-01-25 13:54:12 8302 2

原创 组件设计原则之概念篇(二)

前三个组件设计原则关注组件的内聚,从本文开始,接下来将要介绍的三个原则更多关注组件间的耦合,其难度比前三个原则要大,我将结合一些示例进行讲解,主要参考资料仍然是Robert C.Martin的《敏捷软件开发:原则、模式与实践》(Agile Software Development: Principles, Patterns, and Practices)一书中的“Principles of Pac

2013-01-25 00:27:40 11205 1

原创 组件设计原则之概念篇(一)

在Robert C. Martin(Bob大叔)的《敏捷软件开发:原则、模式与实践》(Agile Software Development: Principles, Patterns, and Practices)一书中,他提出了一些用于设计组件(或包)的原则。传统的面向对象设计原则,例如SOLID、CARP、LoD等主要关注类的设计,而下面要介绍的这些原则主要用于设计组件和包的结构,一共包括六个

2013-01-24 11:45:55 10916 4

原创 设计模式与软考试题之状态模式(二)

2011年下半年软件设计师考试下午试题最后一题考查状态模式,在本试题中,命题人设计了一个具有多个状态的纸巾售卖机,真题如下: 【全国计算机技术与软件专业技术资格(水平)考试  2011 年下半年 软件设计师 下午试卷】       注:当年试题五和试题六二选一,试题五为C++版,试题六为Java版。        试题五       阅读以下说明和 C++代码,将应填入 (n) 处的字句写在答题纸

2013-01-21 11:56:38 6561 1

原创 设计模式与软考试题之状态模式(一)

从2006年-2012年,在全国计算机技术与软件专业技术资格(水平)考试软件设计师级别考试中,状态模式已两次作为下午试题的最后一题出现(参考:历年软件设计师下午考试试题汇总统计),分别是2006年下半年和2011年下半年的两次考试。 【全国计算机技术与软件专业技术资格(水平)考试  2006 年下半年 软件设计师 下午试卷】        注:当年试题六和试题七二选一,试题六为C++版,试题七为J

2013-01-21 00:37:07 7574 2

原创 处理对象的多种状态及其相互转换——状态模式(六)

6 状态模式总结       状态模式将一个对象在不同状态下的不同行为封装在一个个状态类中,通过设置不同的状态对象可以让环境对象拥有不同的行为,而状态转换的细节对于客户端而言是透明的,方便了客户端的使用。在实际开发中,状态模式具有较高的使用频率,在工作流和游戏开发中状态模式都得到了广泛的应用,例如公文状态的转换、游戏中角色的升级等。        1. 主要优点       状态模式的主要优点如下

2013-01-20 23:21:33 12428 5

原创 处理对象的多种状态及其相互转换——状态模式(五)

5 使用环境类实现状态转换       在状态模式中实现状态转换时,具体状态类可通过调用环境类Context的setState()方法进行状态的转换操作,也可以统一由环境类Context来实现状态的转换。此时,增加新的具体状态类可能需要修改其他具体状态类或者环境类的源代码,否则系统无法转换到新增状态。但是对于客户端来说,无须关心状态类,可以为环境类设置默认的状态类,而将状态的转换工作交给具体状态类

2013-01-20 23:06:03 10972 8

原创 处理对象的多种状态及其相互转换——状态模式(四)

4 共享状态      在有些情况下,多个环境对象可能需要共享同一个状态,如果希望在系统中实现多个环境对象共享一个或多个状态对象,那么需要将这些状态对象定义为环境类的静态成员对象。      下面通过一个简单实例来说明如何实现共享状态:      如果某系统要求两个开关对象要么都处于开的状态,要么都处于关的状态,在使用时它们的状态必须保持一致,开关可以由开转换到关,也可以由关转换到开。

2013-01-20 22:57:41 11515 11

原创 处理对象的多种状态及其相互转换——状态模式(三)

3 完整解决方案       Sunny软件公司开发人员使用状态模式来解决账户状态的转换问题,客户端只需要执行简单的存款和取款操作,系统根据余额将自动转换到相应的状态,其基本结构如图4所示:图4 银行账户结构图       在图4中,Account充当环境类角色,AccountState充当抽象状态角色,NormalState、OverdraftState和RestrictedState充当具体状

2013-01-20 22:50:29 14096 12

原创 处理对象的多种状态及其相互转换——状态模式(二)

2 状态模式概述      状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。当系统中某个对象存在多个状态,这些状态之间可以进行转换,而且对象在不同状态下行为不相同时可以使用状态模式。状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象状态可以灵活变化,对于客户端而言,无须关心对象状态的转换以及对象所处的当前状态,无论对于何种状态的对象,客户端都可以一致处

2013-01-20 22:43:02 17669 15

原创 处理对象的多种状态及其相互转换——状态模式(一)

“人有悲欢离合,月有阴晴圆缺”,包括人在内,很多事物都具有多种状态,而且在不同状态下会具有不同的行为,这些状态在特定条件下还将发生相互转换。就像水,它可以凝固成冰,也可以受热蒸发后变成水蒸汽,水可以流动,冰可以雕刻,蒸汽可以扩散。我们可以用UML状态图来描述H2O的三种状态,如图1所示:图1 H2O的三种状态(未考虑临界点)       在软件系统中,有些对象也像水一样具有多种状态,这些状态在某些

2013-01-20 22:34:12 19710 9

原创 Robert C. Martin列举的专业软件开发人员必须精通的技能

在世界顶级软件开发大师Robert C. Martin(Bob大叔)最新力作The Clean Coder: A Code of Conduct for Professional Programmers(《程序员的职业素养》,章显洲、余晟译,人民邮电出版社,2012年)一书中,他结合自己40多年的软件开发经验(1969年至今),列出了他所认为的一个专业软件开发人员必须精通的事项(与原书中次序保持一

2013-01-18 15:58:05 9607 9

原创 协调多个对象之间的交互——中介者模式(五)

20.4 中介者模式总结      中介者模式将一个网状的系统结构变成一个以中介者对象为中心的星形结构,在这个星型结构中,使用中介者对象与其他对象的一对多关系来取代原有对象之间的多对多关系。中介者模式在事件驱动类软件中应用较为广泛,特别是基于GUI(Graphical User Interface,图形用户界面)的应用软件,此外,在类与类之间存在错综复杂的关联关系的系统中,中介者模式都能得到较好的

2013-01-08 22:20:03 10954 2

原创 协调多个对象之间的交互——中介者模式(四)

20.4 中介者与同事类的扩展       Sunny软件公司CRM系统的客户对“客户信息管理窗口”提出了一个修改意见:要求在窗口的下端能够及时显示当前系统中客户信息的总数。修改之后的界面如图20-9所示:图20-9 修改之后的“客户信息管理窗口”界面图       从图20-9中我们不难发现,可以通过增加一个文本标签(Label)来显示客户信息总数,而且当用户点击“增加”按钮或者“删除”按钮时,

2013-01-08 22:00:21 9534 7

原创 协调多个对象之间的交互——中介者模式(三)

20.3 完整解决方案      为了协调界面组件对象之间的复杂交互关系,Sunny公司开发人员使用中介者模式来设计客户信息管理窗口,其结构示意图如图20-7所示:图20-7 引入了中介者类的“客户信息管理窗口”结构示意图      图20-7只是一个重构之后的结构示意图,在具体实现时,为了确保系统具有更好的灵活性和可扩展性,我们需要定义抽象中介者和抽象组件类,其中抽象组件类是所有具体组件类的公共

2013-01-08 21:38:28 11450 11

原创 协调多个对象之间的交互——中介者模式(二)

20.2 中介者模式概述       如果在一个系统中对象之间的联系呈现为网状结构,如图20-4所示。对象之间存在大量的多对多联系,将导致系统非常复杂,这些对象既会影响别的对象,也会被别的对象所影响,这些对象称为同事对象,它们之间通过彼此的相互作用实现系统的行为。在网状结构中,几乎每个对象都需要与其他对象发生相互作用,而这种相互作用表现为一个对象与另外一个对象的直接耦合,这将导致一个过度耦合的系统

2013-01-08 21:31:49 14848 8

原创 协调多个对象之间的交互——中介者模式(一)

腾讯公司推出的QQ作为一款免费的即时聊天软件深受广大用户的喜爱,它已经成为很多人学习、工作和生活的一部分(不要告诉我你没有QQ哦,)。在QQ聊天中,一般有两种聊天方式:第一种是用户与用户直接聊天,第二种是通过QQ群聊天,如图20-1所示。如果我们使用图20-1(A)所示方式,一个用户如果要与别的用户聊天或发送文件,通常需要加其他用户为好友,用户与用户之间存在多对多的联系,这将导致系统中用户之间的关

2013-01-08 21:21:00 15079 5

原创 《设计模式的艺术——软件开发人员内功修炼之道》交流贴

《设计模式的艺术——软件开发人员内功修炼之道》一书正式出版发行,已在国内各大知名电子商务网站陆续上架。 当当网            亚马逊            京东网              在本书的作者简介和前言中,我都加上了CSDN技术博客的地址,如下图所示,,以供大家学习和讨论之需。这篇博客将一直置顶,如果大家在学习过程中有什么问题,或者对本书有什么意见和建议,都可以通过本博客来进行交

2013-01-07 17:55:20 13241 31

转载 编程需要知道多少数学知识?

关于程序员到底要掌握多少数学知识,不同的人有不同的观点,下面这篇文章如是说...... “How much math do I need to know to program?” Not That Much, Actually. Al Sweigart is a software developer in San Francisco, he has written two books about

2013-01-07 15:43:36 19138 9

转载 数学是成就卓越开发人员的必备技能

Sunny最近在读吴军的《数学之美》和结城浩的《程序员的数学》,想到多年前(2006年,)自己也曾写过关于程序员与数学的小文章,故此决定在博客上陆续发表和转载一些与此相关的文章,希望能够对大家有所启发和帮助。         编者按:原文作者Alan Skorkin是一名软件开发人员,他在博客中分享对软件开发相关的心得,其中有很多优秀的文章,本文就是其中一篇,作者认为:成为优秀的开发人员,可以没有

2013-01-07 14:54:27 5519 3

转载 基于索引的SQL语句优化之降龙十八掌

一篇挺不错的关于SQL语句优化的文章,因不知原始出处,故未作引用说明! 1 前言      客服业务受到SQL语句的影响非常大,在规模比较大的局点,往往因为一个小的SQL语句不够优化,导致数据库性能急剧下降,小型机idle所剩无几,应用服务器断连、超时,严重影响业务的正常运行。因此,称低效的SQL语句为客服业务的‘恶龙’并不过分。数据库的优化方法有很多种,在应用层来说,主要是基于索引的优化。本次秘

2013-01-04 00:29:25 9906 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除