![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 79
ldsoftware
这个作者很懒,什么都没留下…
展开
-
模式三:装饰者模式
牢记:代码应该如同晚霞中的莲花一样地关闭(免于改变),如同晨曦中的莲花一样地开放(能够扩展)。3.1装饰者模式定义: 动态地将动作附加到对象上,动作可以根据需要任意叠加(装饰)。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 3.2装饰者模式UML类图: Component是被装饰者和装饰者之间所共同拥有的行为,可以抽象类或接口的方式实现,有别于以传原创 2008-07-30 19:57:00 · 405 阅读 · 0 评论 -
模式十四: 生成器模式
14.1生成器模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。14.2生成器模式UML类图: 14.3应用场景: 1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2、当构造过程必须允许被构造的对象有不同的表示时。 14.4生成器模式分析与实现(c#描述): //抽象假期计划生成器:复杂对原创 2008-08-28 21:50:00 · 1754 阅读 · 1 评论 -
模式十三: 状态模式
13.1状态模式定义:状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。13.2状态模式UML类图:13.3应用场景:1、当一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。 2、一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。通常, 有多个操作包含这一相同的条件原创 2008-08-28 21:47:00 · 1531 阅读 · 0 评论 -
模式十二:组合模式
12.1组合模式定义: 组合模式允许你将对象组合成树型结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 12.2组合模式UML类图: 12.3应用场景:当我们有数个对象的集合,它们彼此之间有整体/部分的关系,并且想用一致的方式处理它们时,就可以使用组合模式。例如我们的应用程序菜单,每一个菜单项可能是一个普通菜单项,原创 2008-08-28 21:42:00 · 548 阅读 · 0 评论 -
模式十:模板方法模式
10.1模板方法模式定义 在一个方法中定义一个算法的框架,而将一些步骤延迟到子类中。模板方法可以使得子类在不改变算法结构的情况下,重新定义算法中的某些步骤。 10.2模板方法模式UML类图: 模式方法的定义:void TemplateMethod()。模式方法不能声明成virtual是因为当然不允许子类改变算法的框架。 10.3应用场景:原创 2008-08-05 21:30:00 · 297 阅读 · 0 评论 -
模式十一:迭代器模式
11.1迭代器模式定义: 迭代器模式提供一种模式顺序访问一个集合对象中的各个元素,而又不暴露其内部的表示。 11.2迭代器模式UML类图: 11.3应用场景: 由于每个集合对象本身不一样,所以当我们对不同类型的集合进行遍历时,由于必须暴露其内部表示,所写的遍历语句(for/foreach)也是不能通用的。而如果我们对需要用到的集合创建迭代器,由于对迭代器的遍原创 2008-08-05 21:45:00 · 923 阅读 · 0 评论 -
模式九:外观模式
9.1外观模式定义: 提供了一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更加容易使用。 9.2外观模式UML类图: 9.3应用场景: 生活中其实有许多外观模式,例如我们去自动取款机取钱,和我们打交道的是取款机(相当于银行一系列复杂子系统的Facade),当我们按下取款原创 2008-08-04 17:40:00 · 280 阅读 · 0 评论 -
模式八:适配器模式
8.1适配器模式定义: 适配器模式将一个类的接口,转换成客户期望的另一个接口,适配器模式让原本接口不兼容的类可以互相合作。 8.2适配器模式UML类图: 8.3应用场景: 我们平常所说的网络适配器即网卡就是适配器最典型的一个例子。我们网卡的Client端(网络设备)是RJ-4原创 2008-08-04 17:32:00 · 621 阅读 · 0 评论 -
模式六:单件模式
6.1单件模式定义: 确保一个类只有一个实例,并提供一个全局访问点。 6.2单件模式UML类图:6.3应用场景在软件开发中有很多对象我们只需要一个,如:线程池,缓存,对话框,注册表对象,日志对象等等,当我们想让某些类只能产生一个对象时,就可以采用单件模式。 6.4单件模式分析与实现(c#描述) Using System.Runtime.Co原创 2008-07-30 20:14:00 · 270 阅读 · 0 评论 -
模式五:抽象工厂模式
5.1抽象工厂模式定义: 抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。 5.2抽象工厂模式UML类图: 5.3应用场景当我们有一系列的对象而不是单个对象可能变化时,例如:如果我们生产一台笔记本电脑和一台普通的PC机,其所用的原料如显卡、声卡虽然名称都一样,但是很明显,其真实的材料却是肯定不一样的。这时原创 2008-07-30 20:11:00 · 290 阅读 · 0 评论 -
模式四:工厂方法模式
4.1工厂方法模式定义 工厂方法模式定义了一个创建对象的接口,但有子类决定需要实例化的类是哪一个。工厂方法模式把类的实例化推迟到子类。 4.2工厂方法模式UML类图: 工厂方法:abstract Product FactoryMethod(string type) 4.3应用场景 当我们需要创建的单个对象可能发生的改变时,例如:假设一个玩具生产原创 2008-07-30 20:05:00 · 300 阅读 · 0 评论 -
简单工厂
简单工厂就是将创建类的操作封装在一个工厂类中,该工厂只被用来创建类,通常传递一个参数用以指定创建具体哪个类。创建类的方法可以被用来设置成静态方法,这样就不用创建工厂类的实例了,这种工厂也称之为静态工厂。一般情况下我们都使用静态工厂,其缺点是不能通过类的特性如继承和多态来扩展和改变行为,也就是说其违背了设计模式的一个重要原则:开-闭原则(对修改关闭,对扩展开放)。简单工厂实际上就是将创建对象原创 2008-07-30 20:03:00 · 223 阅读 · 0 评论 -
模式一:策略模式
1、 模式一:策略模式 1.1策略模式定义:策略模式定义了算法簇,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 1.2应用场景 现任举一现实案例如下,以此来模拟软件开发中的问题事实。设Human类如下:public class Human{ public void Eat原创 2008-07-30 19:02:00 · 291 阅读 · 0 评论 -
模式七:命令模式
7.1命令模式定义: 命令模式将请求(命令)封闭成对象,以便使用不同的请求、队列或者日志来参数化其它对象(命令的发布者)。命令模式也支持可撤消的操作。 7.2命令模式UML类图: 7.3应用场景 命令在生活中随处可见,例如我们开灯这个动作,人是发出命令的对象(对应Invoker),开是命令(对应Command),灯是命令原创 2008-07-30 20:19:00 · 275 阅读 · 0 评论