自定义博客皮肤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!

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

原创 C#设计模式之代理模式(四)

15.7 代理模式效果与适用场景       代理模式是常用的结构型设计模式之一,它为对象的间接访问提供了一个解决方案,可以对对象的访问进行控制。代理模式类型较多,其中远程代理、虚拟代理、保护代理等在软件开发中应用非常广泛。 15.7.1 模式优点       代理模式的共同优点如下:       (1) 能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。       (2) 客户端可以针

2012-11-27 00:22:37 16574 11

原创 C#设计模式之代理模式(三)

15.4 远程代理      远程代理(Remote Proxy)是一种常用的代理模式,它使得客户端程序可以访问在远程主机上的对象,远程主机可能具有更好的计算性能与处理速度,可以快速响应并处理客户端的请求。远程代理可以将网络的细节隐藏起来,使得客户端不必考虑网络的存在。客户端完全可以认为被代理的远程业务对象是在本地而不是在远程,而远程代理对象承担了大部分的网络通信工作,并负责对远程业务方法的调用。

2012-11-27 00:02:02 15880 11

原创 C#设计模式之代理模式(二)

15.3 代理模式应用实例       下面通过一个应用实例来进一步学习和理解代理模式。       1. 实例说明       某软件公司承接了某信息咨询公司的收费商务信息查询系统的开发任务,该系统的基本需求如下:       (1) 在进行商务信息查询之前用户需要通过身份验证,只有合法用户才能够使用该查询系统;       (2) 在进行商务信息查询时系统需要记录查询日志,以便根据查询次数收取

2012-11-26 23:28:42 22157 20

原创 C#设计模式之代理模式(一)

代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求。 15.1 代理模式概述       近年来,代购已逐步成为电子商务

2012-11-26 23:04:10 35785 23

原创 《UML软件建模技术》企业内训课程大纲

近日,Sunny利用周末给国内某大型企业做了一次为期两天的UML软件建模技术的内训,以下是本次企业内训的课程大纲:《UML软件建模技术》课程大纲课程描述      全面学习UML 2.X相关知识,学会使用UML来构造系统的需求模型和实现模型,学会对一个软件系统进行多角度分析与设计,构造一个较为完整的系统模型,学会阅读与绘制13种UML图形并学习撰写相关文档。 课程目标          (1) 学

2012-11-19 22:39:06 5847 10

转载 软件应用无所不在 正吞噬整个世界

网景公司(Netscape)创始人、硅谷著名投资人马克·安德森(Marc Andreessen)曾在华尔街日报发表的文章《软件正在吞噬整个世界》中声称:当今的软件应用无所不在,并且正在吞噬整个世界。这篇文章分析了软件在各主流行业的应用情况和发展趋势。     以下是这篇文章的全文:        本周,惠普(我是该公司董事会董事)宣布将放弃目前处于步履为艰的PC业务,转而致力于认为具有更大增长潜力

2012-11-19 20:22:28 4817 1

原创 Java动态代理的实现

动态代理作为代理模式的一种扩展形式,广泛应用于框架(尤其是基于AOP的框架)的设计与开发,本文将通过实例来讲解Java动态代理的实现过程。       友情提示:本文略有难度,读者需具备代理模式相关基础知识,。         通常情况下,代理模式中的每一个代理类在编译之后都会生成一个class文件,代理类所实现的接口和所代理的方法都被固定,这种代理被称之为静态代理(Static Proxy)。那

2012-10-26 19:09:25 26638 19

原创 2012年上半年软件设计师之设计模式相关试题及解答

设计模式已成为软件设计师考试试题的一个重要组成部分,每次考试中都会有将近20分左右的设计模式试题,下面我分析一下最近一次软考(2012年5月)的设计模式试题,希望能够给备考软件设计师的童鞋们提供一点帮助,。        以下试题都来源于2012年5月软件设计师考试真题。        上午试题:       ● 面向对象分析与设计中的(37)是指一个模块在扩展性方面应该是开放的,而在更改性方面应

2012-10-25 17:33:04 8832 12

原创 三一集团《软件需求分析》企业内训课程大纲

不久前,Sunny给三一集团(三一重工)软件需求相关人员做了一个关于《软件需求分析》的企业内训,以下是本次内训的课程大纲(精简版): 课程描述      本课程将学习软件需求工程相关理论知识与实践技术,分析软件需求阶段所遇到的困难并引出需求工程的概念,通过大量实例学习如何进行需求获取、需求分析、需求定义、需求确认、需求跟踪和需求变更,通过相应的项目实例来分析如何开展需求工程,并学习撰写相关软件需求

2012-10-19 22:32:00 7141

原创 如何使用C#语言实现原型模式

原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。         《西游记》中,孙悟空可以根据自己的形状复制(克隆)出多个身外身,如图1所示,这种技巧在面向对象软件设计领域被称之为原型模式,孙悟空被称之为原型对象。原型模式通过复制一个原型对象得到多个与原型对象一模一样的新对象。 图1 孙悟空复制身外身        原型模式结构如图2所示: 图2 原型模式结构图

2012-10-19 18:37:31 7007 8

转载 UML发展现状与实际应用——希赛嘉宾聊天实录

本文是我在2007年1月作为希赛(CSAI)嘉宾的聊天实录,希望对大家能够有所帮助,来自www.csai.cn。聊天记录:【希赛主持人】各位希赛的网友大家上午好,欢迎大家再次光临希赛嘉宾聊天室,让您们久等了,今天我们有幸请到的是希赛顾问团顾问刘伟作客希赛嘉宾聊天室。先请刘顾问与我们打个招呼吧!【希赛嘉宾】大家好!我是刘伟,很高兴在希赛聊天室和大家交流一下UML的现状和应用方面的问题!【希赛主持人】

2012-09-19 21:07:23 5717

转载 2012年国家自然科学基金中标项目:软件工程相关方向

项目批准号/申请代码1项目名称项目负责人依托单位批准金额项目起止年月61281220273/F020202中美计算机软件研讨会周毓明南京大学1.42012-03至2012-1261272082/F020202知识驱动的大型软件系统的软件维护关键技术及框架研究周毓明南京大学812013-01至2016-1261262015/F020202演化信息驱动的软件质量改善研究钟林辉江西师范大学112013-

2012-09-19 14:02:22 9971

转载 如何成为优秀的软件模型设计者?

模型设计是软件架构师所需具备的基本技能之一,本文是一篇不错的关于如何成为优秀模型设计者的文章,希望对大家有所帮助! ——Sunny              我们期待自己成为一个优秀的软件模型设计者,但是,要怎样做,又从哪里开始呢?   将下列原则应用到你的软件工程中,你会获得立杆见影的成果。   1. 人远比技术重要   你开发软件是为了供别人使用,没有人使用的软件只是没有意义的数据的集合而已。

2012-09-17 14:19:41 4077

原创 GRASP模式

GRASP,全称为General Responsibility Assignment Software Pattern,即通用职责分配软件模式,它由《UML和模式应用》(Applying UML and Patterns)一书作者Craig Larman提出。与其将它们称之为设计模式,不如称之为设计原则,因为它是站在面向对象设计的角度,告诉我们怎样设计问题空间中的类与分配它们的行为职责,以及明确类

2012-09-16 19:40:41 16256 6

转载 常用Java静态代码分析工具的分析与比较

简介      本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了4种现有的主流Java静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,希望能够帮助Java软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中。 引言      在Java软件开发过程中,开发团队往往要花费大量的时间和精力发现并修

2012-09-09 00:02:10 16333 2

转载 11款Java工具:源代码优化与分析

本文介绍一些Java源代码优化和分析工具,以帮助我们优化代码以及检查源代码中的潜在问题。      本文英文原文来源:http://java.dzone.com/articles/java-tools-source-code       1. PMD  网址:http://pmd.sourceforge.net/  PMD能够扫描Java 源代码,查找类似以下的潜在问题:  可能的bug - tr

2012-09-08 22:13:42 14012 7

原创 树形结构的处理——组合模式(五)

11.5 公司组织结构       在学习和使用组合模式时,Sunny软件公司开发人员发现树形结构其实随处可见,例如Sunny公司的组织结构就是“一棵标准的树”,如图11-8所示:图11-8  Sunny公司组织结构图      在Sunny软件公司的内部办公系统Sunny OA系统中,有一个与公司组织结构对应的树形菜单,行政人员可以给各级单位下发通知,这些单位可以是总公司的一个部门,也可以是一个

2012-09-07 23:21:09 19329 7

原创 树形结构的处理——组合模式(四)

11.4  透明组合模式与安全组合模式      通过引入组合模式,Sunny公司设计的杀毒软件具有良好的可扩展性,在增加新的文件类型时,无须修改现有类库代码,只需增加一个新的文件类作为AbstractFile类的子类即可,但是由于在AbstractFile中声明了大量用于管理和访问成员构件的方法,例如add()、remove()等方法,我们不得不在新增的文件类中实现这些方法,提供对应的错误提示和

2012-09-07 23:07:46 17107 19

原创 树形结构的处理——组合模式(三)

11.3  完整解决方案      为了让系统具有更好的灵活性和可扩展性,客户端可以一致地对待文件和文件夹,Sunny公司开发人员使用组合模式来进行杀毒软件的框架设计,其基本结构如图11-5所示:图11-5  杀毒软件框架设计结构图    在图11-5中, AbstractFile充当抽象构件类,Folder充当容器构件类,ImageFile、TextFile和VideoFile充当叶子构件类。完

2012-09-07 23:01:18 18743 13

原创 树形结构的处理——组合模式(二)

11.2 组合模式概述      对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象)并调用执行,牵一而动百,其中使用了递归调用的机制来对整个结构进行处理。由于容器对象和叶子对象在功能上的区别,在使用这些对象的代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下我们希望一致地处理它们,因为对于这些对

2012-09-07 22:55:34 26874 15

原创 树形结构的处理——组合模式(一)

树形结构在软件中随处可见,例如操作系统中的目录结构、应用软件中的菜单、办公系统中的公司组织结构等等,如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题,组合模式通过一种巧妙的设计方案使得用户可以一致性地处理整个树形结构或者树形结构的一部分,也可以一致性地处理树形结构中的叶子节点(不包含子节点的节点)和容器节点(包含子节点的节点)。下面将学习这种用于处理树形结构的组合模式。 11.1

2012-09-07 22:48:53 28889 12

转载 浅谈REST

REST架构风格是全新的针对Web应用的开发风格,是当今世界最成功的互联网超媒体分布式系统架构,它使得人们真正理解了HTTP协议本来面貌。随着REST架构成为主流技术,一种全新的互联网网络应用开发的思维方式开始流行。        一、REST是什么  REST是英文Representational State Transfer的缩写,中文翻译为“表述性状态转移”,它是由Roy Thomas Fi

2012-09-02 20:25:17 3737 1

原创 《设计模式》一书PPT浏览及下载地址

微博地址: http://weibo.com/csusunny          为了给大家浏览与下载提供方便,现将《设计模式》一书PPT的下载地址(百度文库)公布如下(可直接在线浏览,也可免费下载,):      第1章 统一建模语言基础知识 http://wenku.baidu.com/view/a892f64fe45c3b3566ec8b07.html?st=1      第2章 面向对象设

2012-08-13 23:36:23 30052 11

原创 深入浅出UML类图(五)

实例分析3——售票机控制程序      某运输公司决定为新的售票机开发车票销售的控制软件。图I给出了售票机的面板示意图以及相关的控制部件。图I   售票机面板示意图      售票机相关部件的作用如下所述:      (1) 目的地键盘用来输入行程目的地的代码(例如,200表示总站)。      (2) 乘客可以通过车票键盘选择车票种类(单程票、多次往返票和座席种类)。      (3) 继续/取

2012-08-08 14:50:59 18260 18

原创 深入浅出UML类图(四)

实例分析1——登录模块      某基于C/S的即时聊天系统登录模块功能描述如下:      用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较,验证用户输入是否正确,如果输入正确则进入主界面(MainForm),否则提示“输入错误”。      根据以上描述绘制初始类图。     参考解决方案:      参考类图如下:

2012-08-08 14:43:09 37057 17

原创 深入浅出UML类图(三)

类与类之间的关系(2)      2. 依赖关系      依赖(Dependency)关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。例如:驾驶员开车,在Driver类的drive()方法中

2012-08-08 14:34:30 57745 18

原创 深入浅出UML类图(二)

类与类之间的关系(1)      在软件系统中,类并不是孤立存在的,类与类之间存在各种关系,对于不同类型的关系,UML提供了不同的表示方式。      1. 关联关系      关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系,如汽车和轮胎、师傅和徒弟、班级和学生等等。在UML类图中,用实线连接有关联关系的对象所对应的类,在

2012-08-08 13:23:41 47229 43

原创 深入浅出UML类图(一)

在UML 2.0的13种图形中,类图是使用频率最高的UML图之一。Martin Fowler在其著作《UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition》(《UML精粹:标准对象建模语言简明指南(第3版)》)中有这么一段:“If someone were to come up to

2012-08-08 12:18:30 121385 34

原创 抽象外观类的单例化分析与改造

有博友留言问“抽象外观类是否能设计为单例类?”,为了能够更全面地回答这个问题,并且为大家在进行面向对象系统设计和实现时提供更多思路,加深对外观模式和单例模式的理解,特写此文。       关于外观模式的基本知识我在此就不介绍了,大家可以参考之前有关外观模式的几篇文章。本文所使用的示例代码如下(此处采用一种特殊的包含@Stereotype的注释在源代码中标注模式角色,目的是在逆向工程生成的UML类图

2012-08-05 15:06:31 4062 1

原创 算法的封装与切换——策略模式(四)

24.4 策略模式的两个典型应用      策略模式实用性强、扩展性好,在软件开发中得以广泛使用,是使用频率较高的设计模式之一。下面将介绍策略模式的两个典型应用实例,一个来源于Java SE,一个来源于微软公司推出的演示项目PetShop。      (1) Java SE的容器布局管理就是策略模式的一个经典应用实例,其基本结构示意图如图24-3所示:【每次看到这个LayoutManager2接口

2012-08-01 17:08:48 18524 29

原创 算法的封装与切换——策略模式(三)

24.3 完整解决方案      为了实现打折算法的复用,并能够灵活地向系统中增加新的打折方式,Sunny软件公司开发人员使用策略模式对电影院打折方案进行重构,重构后基本结构如图24-2所示:      在图24-2中,MovieTicket充当环境类角色,Discount充当抽象策略角色,StudentDiscount、ChildrenDiscount和VIPDiscount充当具体策略角色。完

2012-08-01 16:56:27 18723 7

原创 算法的封装与切换——策略模式(二)

24.2 策略模式概述      在策略模式中,我们可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法,在这里,每一个封装算法的类我们都可以称之为一种策略(Strategy),为了保证这些策略在使用时具有一致性,一般会提供一个抽象的策略类来做规则的定义,而每种算法则对应于一个具体策略类。      策略模式的主要目的是将算法的定义与使用分开,也就是将算法的行为和环境分开,将算法的定义

2012-08-01 16:44:31 24615 16

原创 算法的封装与切换——策略模式(一)

俗话说:条条大路通罗马。在很多情况下,实现某个目标的途径不止一条,例如我们在外出旅游时可以选择多种不同的出行方式,如骑自行车、坐汽车、坐火车或者坐飞机,可根据实际情况(目的地、旅游预算、旅游时间等)来选择一种最适合的出行方式。在制订旅行计划时,如果目的地较远、时间不多,但不差钱,可以选择坐飞机去旅游;如果目的地虽远、但假期长、且需控制旅游成本时可以选择坐火车或汽车;如果从健康和环保的角度考虑,而且

2012-08-01 16:14:36 26548 11

转载 MVC已死?是时候用MOVE了

参考资料:MVC is dead, it's time to MOVE on. http://cirw.in/blog/time-to-move-on       作者:Conrad Irwin — June 2012      MVC模式是一个很了不起的主意,它广泛应用于编程实践中。“数据模型(Model)”可以封装与应用程序的业务逻辑相关的数据及对数据的处理方法;“视图层(View)”能够实现

2012-07-29 02:17:16 9315 1

原创 外观模式及其改进(三):外观类的单例化

由于外观类维持了对多个子系统类的引用,外观对象在系统运行时将占用较多的系统资源,因此需要对外观对象的数量进行限制,避免系统资源的浪费。可以结合单例模式对外观类进行改进,将外观类设计为一个单例类。通过对外观模式单例化,可以确保系统中只有唯一一个访问子系统的入口,降低系统资源的消耗。单例化之后的外观模式结构如图6所示:图6  单例外观类结构图      在图6中,外观类Facade被设计为单例类,在其

2012-07-29 01:43:17 4897 4

原创 外观模式及其改进(二):抽象外观类的引入

在通用的外观模式结构图中,如果需要增加、删除或更换与外观类交互的子系统类,必须修改外观类或客户端的源代码,这将违背开闭原则,因此我们可以通过引入抽象外观类来对系统进行改进,在一定程度上解决该问题。在引入抽象外观类之后,客户端可以针对抽象外观类进行编程,对于新的业务需求,不需要修改原有外观类,而对应增加一个新的具体外观类,由新的具体外观类来关联新的子系统对象,同时通过修改配置文件来达到不修改任何源代

2012-07-29 00:26:02 5366 3

原创 外观模式及其改进(一):外观模式概述

外观模式是使用频率最高的结构型设计模式之一,无论是在Web应用软件或是桌面应用软件,还是在移动应用软件中,外观模式都得到了广泛的应用。      外观模式要求外部与一个子系统的通信可以通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的入口,它定义了一个高层接口,这个接口使得相关子系统更加容易使用。如果没有外观角色,每个客户端可能需要和多个子系统之间进行复杂的交互,系统的耦合度将很大,如

2012-07-29 00:03:52 4978 2

原创 甘特图版2012年伦敦奥运会赛程表

7月27日,2012年伦敦奥运会就要隆重举行了,工作之余,偶做了个甘特图版2012年伦敦奥运会赛程表,以飨观众,。2012年伦敦奥运会赛程表项目/日期7.25周三7.26周四7.27周五7.28周六7.29周日7.30周一7.31周二8.1周三8.2周四8.3周五8.4周六8.5周日8.6周一8.7周二8.8周三8.9周四8.10周五8.11周六8.12周日金牌数开幕式闭幕式足球112射箭1111

2012-07-26 00:09:45 7299 1

翻译 设计模式真的能改善软件质量吗?(二)

接前一篇文章: “设计模式真的能改善软件质量吗?(一)”结果分析      选取三个知名的设计模式:组合模式、抽象工厂模式、享元模式     (1)  组合模式         结论:组合模式对大部分质量属性都有正影响,可伸缩性(Scalability)和健壮性(Robustness)除外。                 (2) 抽象工厂模式      结论:总体上来说,抽象工厂模式对软件质量属

2012-07-25 00:16:07 16165 40

翻译 设计模式真的能改善软件质量吗?(一)

本文是加拿大蒙特利尔大学(University of Montreal)Foutse Khomh和Yann-Gaël Guéhéneuc开展的一项经验性软件研究的成果,他们已在此基础上发表了相关论文。      为了让国内开发人员也能够了解这项研究并能够参与其中,我将几篇相关论文的核心部分翻译并整理为本文,以供参考!       很多人都宣称设计模式的使用会给一些软件质量属性带来正面的影响,将改善

2012-07-24 23:05:01 11811 31

空空如也

空空如也

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

TA关注的人

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