欢迎来到天天文库
浏览记录
ID:23179260
大小:972.92 KB
页数:129页
时间:2018-11-05
《[计算机软件及应用]设计模式》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、目录设计模式准备篇2状态模式8观察者模式15命令模式30外观模式40模版方法模式48适配器模式57组合模式61桥接模式68代理模式75装饰模式80策略模式88简单工厂模式96工厂方法模式101单例模式105原型模式109建造者模式117抽象工厂模式123设计模式准备篇1.设计模式的重要性 1.1 设计模式解决的是在软件过程中如何来实现具体的软件功能。实现同一个功能的方法有很多,哪个设计容易扩展,容易复用,松耦合,可维护?设计模式指导我们找到最优方案。 1.2 设计中往往会存在设计缺陷,这些缺陷包括: 僵化性:
2、难以对软件进行改动,即使在功能上来看是很小的改动 脆弱性:在进行很小的改动时,可能导致很多地方出现问题 顽固性:要把系统中某些通用的功能分离出来的努力和风险非常巨大 粘滞性:当面临改动时,改动的方案有很多,一些会保持设计,一些会破坏设计,当采用保持设计的方法比用破坏设计的方法更难应付变化时,说明原设计具有较高的粘滞性 晦涩性:模块难以理解 不必要的重复:代码不能复用,往往通过Copy-Paste来实现相似功能 不必要的复杂性:设计中包含了没有用的成分,往往是过度设计导致的 1.3
3、如果你觉得在开发过程中发现以上问题(缺陷),那么就需要使用设计模式来改善最初设计,即重构原有的设计。如果你是最初的设计者,那么也需要应用设计模式来找到一个最优方案。设计模式不是编程语言,它修炼的是程序员的内功。因此,对于一个开发者来说,学习设计模式是非常必要的。2.对于初学者来说,必要的知识准备还是必须的,没有这些基础就很难将这些理解透彻。 2.1 面向对象基本知识 设计模式是面向对象编程的设计指导,因此学习设计模式前先要理解什么是面向对象,这里只简单列出了面向对象的主要概念,要是初学者的话还得查阅相关资料;对已经
4、了解的老手来说,权当复习和梳理一下吧。 2.1.1面向对象三大特征:封装、继承、多态 2.1.2类与实例 2.1.3构造(析构)方法 2.1.4重载 2.1.5访问修饰符 2.1.6属性/字段/方法 2.1.7抽象类 2.1.8接口 2.2 UML类图 在学习设计模式时,通常接触到的只有类图,因此读懂UML类图对理解模式来说有很大帮助。下面来介绍UML类图中的关系 2.2.1依赖关系(Dependency),用虚线加箭头表示。如上图动物(Animal
5、)依赖空气(Air)。表示依赖关系的代码有以下几种 1)作为参数publicclassAir{publicvoidGetOxygen(){Console.WriteLine("Getoxygenfromair.");}}publicabstractclassAnimal{//////动物依赖空气才能呼吸,作为参数传入//////publicvoidBreathe(Airair){air.GetOxygen();}}
6、 2)在方法内部定义 //////动物依赖空气才能呼吸,在方法内部实例化新对象///publicvoidBreathe(){Airair=newAir();air.GetOxygen();} 3)静态方法调用//////在方法中调用静态方法///publicvoidTest(){ClassName.UseStaticMethode();} 2.2.2继承关系(Inherit),用实线加空心箭头表示,如上图鹰(Eagle)
7、继承自动物(Animal) //////鹰继承自Animal///publicclassEagle:Animal{} 2.2.3实现关系(Realize),用虚线加空心箭头表示,如上图鹰(Eagle)实现了飞行能力(IFlyAble) //////鹰继承自Animal///publicclassEagle:Animal,IFlyAble{ //实现IFlyAble接口中定义的方法publicvoidFly(){C
8、onsole.WriteLine("老鹰可以飞翔。");}} 2.2.4组合关系,讲组合关系之前不得不谈关联关系与聚合关系 1)关联关系(Association):对于两个相对独立的对象,当一个对象实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间的关系为关联关系。例如:公司与员工的关系
此文档下载收益归作者所有