资源描述
标题标题标题,第一级,第二级,第三级,*,教学交流,设计模式,课程重点与难点剖析,刘 伟,weiliu,大纲,学习目标,重点,难点,教学模式,教学实例,交流,学习目标,培养面向对象思想,提升软件设计水平,改善代码质量(模式导向重构),降低代码的理解难度,GoF,设计模式是程序员真正掌握面向对象核心思想的必修课,学习目标,提升,面向对象分析与设计,能力,掌握常用的,面向对象设计原则,和,GoF,设计模式,学会在应用开发中,运用设计模式,学会使用设计模式,对代码和设计方案进行重构,,,改善代码和设计质量,进一步,熟悉建模(分析与设计)工具和,UML,培养软件,设计与架构思想,重点,面向对象设计原则,:,SRP,OCP,LSP,DIP,ISP,CRP,LoD,创建型模式,:,Simple Factory,Factory Method,Abstract Factory,Builder,Prototype,Singleton,结构型模式,:,Adapter,Bridge,Composite,Decorator,Facade,Flyweight,Proxy,行为型模式,:,Chain of Responsibility,Command,Interpreter,Iterator,Mediator,Memento,Observer,State,Strategy,Template Method,Visitor,重点,设计模式要点总结,封装变化,职责单一,针对接口(抽象层)编程,复用时用关联,扩展时用继承,难点,问题,没兴趣?,听不懂?,不会用?,忘得快?,难点,问题,解决之道,企业招聘需求,难点,问题,解决之道,通俗实例(引入模式),毛笔与蜡笔,猫和老鼠,孙悟空变身,电源适配器,电视机遥控器,难点,问题,解决之道,项目实例,界面皮肤库,负载均衡器,采购审批流程,影院售票打折方案,员工数据汇总,难点,问题,解决之道,思考与练习,课堂思考题,课后练习题,实验课(实验报告),项目实训(合理使用设计模式),教学模式,实例驱动教学,教学模式,通俗实例,项目实例,掌握:,一个通俗实例,模式动机(定义),结构图(类图),一个典型项目应用实例,教学实例,教学实例分析,教学实例,桥接模式,生活实例,毛笔与蜡笔的“故事”,12,种颜色,,3,种型号,3,支毛笔,+,12,种颜色的调色板,36,支蜡笔,教学实例,桥接模式,生活实例,分析,画笔中存在的两个独立变化维度示意图,教学实例,桥接模式,庞大的跨平台图像浏览系统,:,实例说明,某软件公司欲开发一个,跨平台图像浏览系统,,要求该系统能够显示,BMP,、,JPG,、,GIF,、,PNG,等,多种格式,的文件,并且能够在,Windows,、,Linux,、,Unix,等,多个操作系统,上运行。系统首先将各种格式的文件解析为像素矩阵,(Matrix),,然后将像素矩阵显示在屏幕上,在不同的操作系统中可以调用不同的绘制函数来绘制像素矩阵。,教学实例,桥接模式,庞大的跨平台图像浏览系统,:初始设计方案,教学实例,桥接模式,庞大的跨平台图像浏览系统,:问题,(1),采用了多层继承结构,导致系统中类的个数急剧增加,,具体层的类的个数,=,所支持的图像文件格式数,所支持的操作系统数,(2),系统扩展麻烦,无论是增加新的图像文件格式还是增加新的操作系统,都需要增加大量的具体类,这将,导致系统变得非常庞大,增加运行和维护开销,教学实例,桥接模式,引入模式,桥接模式,教学实例,桥接模式,模式动机,模式定义,模式结构,模式实现,实例分析,模式扩展,模式效果(优缺点),模式适用环境,桥接模式:,将,抽象部分,与它的,实现部分,解耦,,使得两者都能够独立变化。,Bridge Pattern:,Decouple,an,abstraction,from its,implementation,so that the two can vary independently.,教学实例,桥接模式,跨平台图像浏览系统结构图,教学实例,桥接模式,实例代码,(1)Matrix,:像素矩阵类,辅助类,(2)ImageImp,:抽象操作系统实现类,充当实现类接口,(3)WindowsImp,:,Windows,操作系统实现类,充当具体实现类,(4)LinuxImp,:,Linux,操作系统实现类,充当具体实现类,(5)UnixImp,:,Unix,操作系统实现类,充当具体实现类,(6)Image,:抽象图像类,充当抽象类,(7)JPGImage,:,JPG,格式图像类,充当扩充抽象类,(8)PNGImage,:,PNG,格式图像类,充当扩充抽象类,(9)BMPImage,:,BMP,格式图像类,充当扩充抽象类,(10)GIFImage,:,GIF,格式图像类,充当扩充抽象类,(11),配置文件,App.config,(12)Program,:客户端测试类,演示,参考代码,(DesignPatternBridgeSample),教学实例,桥接模式,思考与练习,如果系统中存在,两个以上,的变化维度,是否可以使用桥接模式进行处理?如果可以,系统该如何设计?,END,Thanks!,交流,Any Questions?,电子邮箱:,weiliu,技术博,客地址:,
展开阅读全文