摘要: 尽管在某种程度上,单件模式是限制而不是改进类的创建,但它仍和其他创建模式分在一组。单件模式可以保证一类有且只有一个实例,并提供一个访问它的全局访问点,在程序设计过程中,有很多情况需要确保一个类只能有一个实例。例如系统中能有一个窗口管理器,一个数据库引擎的访问点。PC机中可能有几个串口,但只能有一个COM1实例。使用静态方法创建单件 让一个类只有一个实例,最容易的方法就是在类中嵌入一个静态变量,并在第一个类实例中设置改变量,而且每次进入构造函数都要检查。不管类有多少实例,静态变量只能有一个实例。为了防止类被多次实例化,我们把构造函数声明为私有的,这样只能在类的静态方法里创建一个实例。下面创建一. 阅读全文
posted @ 2012-03-27 19:41 孙金棚 阅读(1168) 评论(0) 推荐(3) 编辑
摘要: 抽象工厂模式,比工厂模式具有更高层次的抽象。当要返回一系列相关类中的某一个,而每个类都能根据需要返回不同的对象时,可以使用这种模式。换句话说,抽象工厂是一个工厂对象,他能返回一系列相关类中的一个类。可以用简单工厂决定返回那个类。通常认为,实验式的例子应该引用汽车制造产,我们希望丰田汽车完全使用丰田配件,而福特汽车完全使用福特配件。可以把每个汽车制造厂设想为抽象工厂,配件作为一组相关的类。花园规划工厂 我们可以考虑一下实际的例子,字应用程序里要用到抽象工厂。假设读者编写一个程序来规划花园,这可能是季生植物型花园、蔬菜型花园、或者多年植物花园。不管规划哪种类型的花园,都会遇到如下问题:1.边缘种. 阅读全文
posted @ 2012-03-27 14:52 孙金棚 阅读(1039) 评论(0) 推荐(3) 编辑
摘要: 工厂方法工厂的概念反复出现在面向对象程序设计中,在C#本身和其他设计模式(例如生成器模式)中,就能找到几个例子。在这个例子中,有一个类负责决定在单继承体系结构中实例化哪一个字类。 工厂方法模式(Factory Method Pattern)对这种思想进行了巧妙的扩展,它不是用一个专门的类来决定实例化那一个字类,相反,超类把这种决定延迟到没个子类。这种设计模式实际上没有决策点,即没有直接选择一个字类实例化的决策。按照这种模式编写的程序定义了一个抽象类,他去创建对象,但让子类决定创建哪一种对象。 这里考虑一个相当简单的例子,在游泳比赛中为运动员确定泳道。在一个赛事中,游泳选手完成几次预赛后,按.. 阅读全文
posted @ 2012-03-27 11:45 孙金棚 阅读(1148) 评论(4) 推荐(3) 编辑