1/44
文档分类:IT计算机

c设计模式设计模式概述.ppt


下载后只包含 1 个 PPT 格式的文档,里面的视频和音频不保证可以播放,查看文件列表

特别说明:文档预览什么样,下载就是什么样。

下载所得到的文件列表
c设计模式设计模式概述.ppt
文档介绍:
C设计模式设计模式概述
大纲
引言
设计模式的诞生与开展
设计模式的定义与分类
GoF设计模式简介
设计模式的优点
引言
从三个实例说起……
实例一:
庞大的跨平台图像浏览系统
实例二:
不够灵活的影院售票系统
实例三:
重用第三方算法库时面临的问题
引言
庞大的跨平台图像浏览系统
实例说明
某软件公司要开发一个跨平台图像浏览系统,要求该系统能够显示BMP、JPG、GIF、PNG等多种格式的文件,并且能够在Windows、Linux、Unix等多个操作系统上运行。系统首先将各种格式的文件解析为像素矩阵(Matrix),然后将像素矩阵显示在屏幕上,在不同的操作系统中可以调用不同的绘制函数来绘制像素矩阵。
引言
庞大的跨平台图像浏览系统
初始设计方案
引言
庞大的跨平台图像浏览系统
问题
(1) 采用了多层继承构造,导致系统中类的个数急剧增加,具体层的类的个数 = 所支持的图像文件格式数×所支持的操作系统数
(2) 系统扩展麻烦,无论是增加新的图像文件格式还是增加新的操作系统,都需要增加大量的具体类,这将导致系统变得非常庞大,增加运行和维护开销
引言
不够灵活的影院售票系统
实例说明
某软件公司为某电影院开发了一套影院售票系统,在该系统中需要为不同类型的用户提供不同的电影票打折方式,具体打折方案如下:
(1) 学生凭学生证可享受票价8折优惠;
(2) 年龄在10周岁及以下的儿童可享受每张票减免10元的优惠〔原始票价需大于等于20元〕;
(3) 影院VIP用户除享受票价半价优惠外还可进展积分,积分累计到一定额度可换取电影院赠送的奖品。
该系统在将来可能还要根据需要引入新的打折方式。
引言
不够灵活的影院售票系统
初始实现方案
//电影票类
class MovieTicket
{
private double price; //电影票价格
private string type; //电影票类型
……
//计算打折之后的票价
public double Calculate()
{
//学生票折后票价计算
if(this.type.Equals("student"))
{
Console.WriteLine("学生票:");
return this.price * 0.8;
}
//儿童票折后票价计算
else if(this.type.Equals("children") && this.price >= 20 )
{
Console.WriteLine("儿童票:");
return this.price - 10;
}
//VIP票折后票价计算
else if(this.type.Equals("vip"))
{
Console.WriteLine("VIP票:");
Console.WriteLine("增加积分!");
return this.price * 0.5;
}
else
{
return this.price; //如果不满足任何打折要求,则返回原始票价
}
}
}
引言
不够灵活的影院售票系统
问题
(1) MovieTicket类的Calculate()方法非常庞大,它包含各种打折算法的实现代码,在代码中出现了较长的条件转移语句,不利于测试和维护
(2) 在增加新的打折算法或者对原有打折算法进展修改时必须修改MovieTicket类的源代码,系统的灵活性和可扩展性较差
(3) 算法的复用性差,如果另一个系统需要重用某些打折算法,只能通过对源代码进展复制粘贴来重用,无法单独重用其中的某个或某些算法
引言
重用第三方算法库时面临的问题
实例说明
某软件公司在开发一个银行业务处理系统时需要对其中的机密数据进展加密处理,通过分析发现,用于加密的程序已经存在于一个第三方算法库中,但是没有该算法库的源代码。在系统初始设计阶段,已定义数据操作接口DataOperation,且该接口已被很多同事使用,对该接口的修改势必导致大量代码需要产生改动。
内容来自淘豆网www.taodocs.com转载请标明出处.
相关文档
非法内容举报中心
文档信息
  • 页数44
  • 收藏数0 收藏
  • 顶次数0
  • 上传人1557281760
  • 文件大小2.40 MB
  • 时间2021-09-13