全球旧事资料 分类
道实际子类的名称(当系统复杂后,命名将是一个很不好处理的问题,为了处理可能的名字冲突,有的命名可能并不是具有很好的可读性和可记忆性,就姑且不论不同程序员千奇百怪的个人偏好了),程序的扩展性和维护变得越来越困难。2)还有一种情况就是在父类中并不知道具体要实例化哪一个具体的子类。这里的意思为:假设我们在类A中要使用到类B,B是一个抽象父类,在A中并不知道具体要实例化那一个B的子类,但是在类A的子类D中是可以知道的。在A中我们没有办法直接使用类似于
ew×××的语句,因为根本就不知道×××是什么。以上两个问题也就引出了Factory模式的两个最重要的功能:1)定义创建对象的接口,封装了对象的创建;2)使得具体化类的工作延迟到了子类中。
Factory设计模式结构图:
第3页
f二单例模式:单例模式(Si
gleto
Patter
)又称单件模式,单例模式保证一个类仅有一个实例,
并提供一个访问的他的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化单对象,一个最好的办法就是,让类自身负责保存他的唯一实例,这个类可以保证没有其他实例可以被创建并且他可以提供一个访问该实例的方法。
单例模式设计式结构:
Si
gleto
i
sta
ceSi
gleto
Si
gleto
GetI
sta
ce
Si
gle
to
类,定义了一个GetI
sta
ce操作,允许客户访问他的唯一实例,GetI
sta
ce是一个静态方法,主要负责创建自己的唯一实例。
实验环境操作系统:Wi
dows98Wi
dowsXPWi
dows7开发工具:VisualC60
四.应用程序的设计
类层次图
第4页
fFactory
abstratCreatFruitvarstri
FruitabstratFactory
Fruit
Fruitabstratpla
tvoidabstratpricevoidabstratvaluevoidabstratFruit
Co
creteFactory
statici
sta
ceCo
creteFactoryCo
creteFactorystaticI
sta
ceCo
creteFactoryCreatFruitvarstri
FruitCo
creteFactory
Apple
pla
tvoidpricevoidvaluevoidApple
Ora
ge
Pear
pla
tvoidpricevoidvaluevoidOra
ge
pla
tvoidpricevoidvaluevoidPear
程序实现思路第一步:创建抽象类Fruit类声明保护类成员:Fruit声明公有成员纯虚函数:virtualvoidpla
t0virtualvoidprice0virtualvoidvalue0virtualFruit0第二步:分别创建Fruit的派生类AppleOra
gePear;第三步:实现Fruit类与AppleOra
gePear类分别实现各类的构造函数,析构函数,业务函数pla
t、value,price
第5页
f第四步:创建Factory类;引用头文件stri
g;构造函数声明为protected类;声明公有纯虚函数:virtualFactory0virtualFruitCreatFruitstri
gvar0
r
好听全球资料 返回顶部