第2章-实例研究: 设计一个文档编辑器--支持多种视感标准

支持多种视感标准

  • 重新定位一个平台不应该花费大量的成本
  • 运行时改变Lexi的外观和感觉
  • 每个窗口的视觉标准一定不一样

对象创建的抽象

  • 我们假定两个窗口组件图元集合来实现多个视感标准:
    • 第一个集合是由Glyph子类构成的
    • 第二个集合是由与抽象子类对应在不同视感标准的具体的子类构成的

注意:很明显Lexi的实现不能直接通过调用C++的构造器去创建各个图元,那样会将按扭硬性定义成一种特殊的风格,并且不能在运行时刻改变选择风格

通常我们会使用以下C++代码来创建一个Motif滚动图元实例

ScrollBar* sb = new MotifScrollBar

可是如果想要把Lexi的视感标准依赖降低到最小的话,这种代码要尽量避免。采用以下的代码通常是更好的选择

ScollBar* sb = guiFactory->CreateScrollBar();

这里的guiFactoryMotifFactory类的实例的基类指针。CreateScrollBar为所需要的视感返回一个合适的ScrollBar子类的实例指针,如MotifScrollBar*。一旦和客户相关联,它就等价于调用一个MotifScrollBar的构造器。

  • 两者的区别在于:
    • 不会在程序代码中直接提及Motif的名字
    • 不局限于创建滚动条图元,还适用于其它包括滚动条、按扭、输入域、菜单等窗口组件图元

GUIFactory类层次(摘自图2-9)

GUIFactory类层次


抽象产品类和具体子类(摘自图2-10)

抽象产品类和具体子类


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值