刘伟技术博客

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

中图分类号——计算机软件类

中图分类号之计算机软件类TP31 计算机软件    TP311 程序设计、软件工程        TP311.1 程序设计            TP311.11 程序设计方法            TP311.12 数据结构            TP311.13 数据库理论与系统       ...

2013-07-15 18:34:55

阅读数:6446

评论数:1

重复代码(克隆代码)的几个概念与类型

本文内容来源于以下两篇参考文献:       Chanchal K. Roy, James R. Cordy, Rainer Koschke. Comparison and Evaluation of Code Clone Detection Techniques and Tools: A Qua...

2013-07-14 20:59:45

阅读数:8041

评论数:0

工厂三兄弟之抽象工厂模式(五)

5 “开闭原则”的倾斜性       Sunny公司使用抽象工厂模式设计了界面皮肤库,该皮肤库可以较为方便地增加新的皮肤,但是现在遇到一个非常严重的问题:由于设计时考虑不全面,忘记为单选按钮(RadioButton)提供不同皮肤的风格化显示,导致无论选择哪种皮肤,单选按钮都显得那么“格格不入”。S...

2013-07-13 16:58:07

阅读数:13822

评论数:18

工厂三兄弟之抽象工厂模式(四)

4 完整解决方案       Sunny公司开发人员使用抽象工厂模式来重构界面皮肤库的设计,其基本结构如图6所示:图6 界面皮肤库结构图       在图6中,SkinFactory接口充当抽象工厂,其子类SpringSkinFactory和SummerSkinFactory充当具体工厂,接口Bu...

2013-07-13 16:47:52

阅读数:16784

评论数:15

工厂三兄弟之抽象工厂模式(三)

3 抽象工厂模式概述       抽象工厂模式为创建一组对象提供了一种解决方案。与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品。抽象工厂模式定义如下:       抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖...

2013-07-13 16:40:12

阅读数:17432

评论数:22

工厂三兄弟之抽象工厂模式(二)

2 产品等级结构与产品族       在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法具有唯一性,一般情况下,一个具体工厂中只有一个或者一组重载的工厂方法。但是有时候我们希望一个工厂可以提供多个产品对象,而不是单一的产品对象,如一个电器工厂,它可以生产电视机、电...

2013-07-13 16:34:27

阅读数:17163

评论数:10

工厂三兄弟之抽象工厂模式(一)

工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时,我们可以考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产,这就是我们本文将要学习的抽象工厂模式的基本...

2013-07-13 16:17:57

阅读数:19978

评论数:13

22种代码味道(Martin Fowler与Kent Beck)

Martin Fowler在Refactoring: Improving the Design of Existing Code(中译名:《重构——改善既有代码的设计》)一书中与Kent Beck一起总结了22种代码坏味(Bad Smells in Code),因为Sunny这段时间正在做一些与代...

2013-07-13 12:29:26

阅读数:13717

评论数:5

工厂三兄弟之工厂方法模式(四)

5 重载的工厂方法       Sunny公司开发人员通过进一步分析,发现可以通过多种方式来初始化日志记录器,例如可以为各种日志记录器提供默认实现;还可以为数据库日志记录器提供数据库连接字符串,为文件日志记录器提供文件路径;也可以将参数封装在一个Object类型的对象中,通过Object对象将配置...

2013-07-12 11:00:25

阅读数:16742

评论数:8

工厂三兄弟之工厂方法模式(三)

3 完整解决方案        Sunny公司开发人员决定使用工厂方法模式来设计日志记录器,其基本结构如图3所示:图3 日志记录器结构图       在图3中,Logger接口充当抽象产品,其子类FileLogger和DatabaseLogger充当具体产品,LoggerFactory接口充当抽象...

2013-07-12 10:35:24

阅读数:21045

评论数:26

工厂三兄弟之工厂方法模式(二)

2 工厂方法模式概述       在简单工厂模式中只提供一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它需要知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类。简单工厂模式最大的缺点是当有新产品要加入到系统中时,必须修改工厂类,需要在其中加入必要的业务逻辑,这违背了“开闭原则”。此...

2013-07-12 10:13:01

阅读数:20188

评论数:22

工厂三兄弟之工厂方法模式(一)

简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背“开闭原则”,如何实现增加新产品而不影响已有代码?工厂方法模式为此应运而生,本文将介绍第二种工厂模式——工厂方法模式。 1 日志记录器的设...

2013-07-12 09:45:34

阅读数:22050

评论数:15

工厂三兄弟之简单工厂模式(四)

4 方案的改进       Sunny软件公司开发人员发现在创建具体Chart对象时,每更换一个Chart对象都需要修改客户端代码中静态工厂方法的参数,客户端代码将要重新编译,这对于客户端而言,违反了“开闭原则”,有没有一种方法能够在不修改客户端代码的前提下更换具体产品对象呢?答案是肯定的,下面将...

2013-07-11 14:55:44

阅读数:18716

评论数:19

工厂三兄弟之简单工厂模式(三)

3 完整解决方案       为了将Chart类的职责分离,同时将Chart对象的创建和使用分离,Sunny软件公司开发人员决定使用简单工厂模式对图表库进行重构,重构后的结构如图2所示:图2 图表库结构图       在图2中,Chart接口充当抽象产品类,其子类HistogramChart、Pi...

2013-07-11 14:47:31

阅读数:17274

评论数:17

工厂三兄弟之简单工厂模式(二)

2 简单工厂模式概述       简单工厂模式并不属于GoF 23个经典设计模式,但通常将它作为学习其他工厂模式的基础,它的设计思想很简单,其基本流程如下:       首先将需要创建的各种不同对象(例如各种不同的Chart对象)的相关代码封装到不同的类中,这些类称为具体产品类,而将它们公共的代码...

2013-07-11 14:42:38

阅读数:22243

评论数:21

工厂三兄弟之简单工厂模式(一)

工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式。本章将要学习的简单工厂模式是工厂方法模式的“小弟”,它不属于GoF 23种设计模式,但在软件开发中应用也较为频繁,通常将它作为学习其他工厂模式的入门。此外,工厂方法模式还有一位“大哥”——抽...

2013-07-11 14:24:40

阅读数:28895

评论数:20

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

2013年上半年(5月份)软考软件设计师级别考试中,与设计模式相关的试题共19分,其中上午填空题4分,下午试题15分。试题及分析如下:     上午试题:      ● (44)设计模式能使一个对象的状态发生改变时通知所有依赖它的监听者。(45)设计模式限制类的实例对象只能有一个。适配器(Adap...

2013-07-09 20:04:41

阅读数:10257

评论数:20

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

2012年下半年(11月份)软考软件设计师级别考试一共有三道与设计模式相关的试题(共19分),其中上午填空题两道(4分),下午试题一道(15分)。试题及分析如下:      上午试题:       ● 每种设计模式都有特定的意图,(44)模式使得一个对象在其内部状态改变时通过调用另一个类中的方法改...

2013-07-08 21:52:01

阅读数:6844

评论数:7

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