4

工厂三兄弟之抽象工厂模式(四)

 4 years ago
source link: https://blog.csdn.net/LoveLion/article/details/9319481
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

4 完整解决方案

       Sunny公司开发人员使用抽象工厂模式来重构界面皮肤库的设计,其基本结构如图6所示:

图6 界面皮肤库结构图

       在图6中,SkinFactory接口充当抽象工厂,其子类SpringSkinFactory和SummerSkinFactory充当具体工厂,接口Button、TextField和ComboBox充当抽象产品,其子类SpringButton、SpringTextField、SpringComboBox和SummerButton、SummerTextField、SummerComboBox充当具体产品。完整代码如下所示:

       为了让系统具备良好的灵活性和可扩展性,我们引入了工具类XMLUtil和配置文件,其中,XMLUtil类的代码如下所示:

       配置文件config.xml中存储了具体工厂类的类名,代码如下所示:

       编写如下客户端测试代码:

       编译并运行程序,输出结果如下:

显示浅绿色按钮。

显示绿色边框文本框。

显示绿色边框组合框。

       如果需要更换皮肤,只需修改配置文件即可,在实际环境中,我们可以提供可视化界面,例如菜单或者窗口来修改配置文件,用户无须直接修改配置文件。如果需要增加新的皮肤,只需增加一族新的具体组件并对应提供一个新的具体工厂,修改配置文件即可使用新的皮肤,原有代码无须修改,符合“开闭原则”。

  疑问    

扩展

       在真实项目开发中,我们通常会为配置文件提供一个可视化的编辑界面,类似Struts框架中的struts.xml编辑器,大家可以自行开发一个简单的图形化工具来修改配置文件,实现真正的纯界面操作。

【作者:刘伟  http://blog.csdn.net/lovelion


Recommend

  • 21
    • www.cnblogs.com 4 years ago
    • Cache

    设计模式——抽象工厂模式

    目录 设计模式——抽象工厂模式 2. 示例1-使用工厂模式实现对不同数据库的操作 3. 示例2-多数据库且多表操作 4. 重构示例2-使用简单工厂改进抽象工厂 5. 重构...

  • 8

    5 “开闭原则”的倾斜性        Sunny公司使用抽象工厂模式设计了界面皮肤库,该皮肤库可以较为方便地增加新的皮肤,但是现在遇到一个非常严重的问题:由于设计时考虑不全面,忘记为单选按钮(RadioButton)提供不同皮肤的风格化显示,导致无论选择哪种皮...

  • 4

    2 产品等级结构与产品族        在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法具有唯一性,一般情况下,一个具体工厂中只有一个或者一组重载的工厂方法。但是有时候我们希望一个工厂可以提供多个产品对象,...

  • 7

    工厂三兄弟之抽象工厂模式(一)        工厂方法模式通过引入工...

  • 8

    3 抽象工厂模式概述        抽象工厂模式为创建一组对象提供了一种解决方案。与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品。抽象工厂模式定义如下:        抽象工厂模式(Abstract Facto...

  • 3
    • youngxhui.top 3 years ago
    • Cache

    抽象工厂模式

    抽象工厂模式  2020-03-02  2020-03-02  约 1022 字   预计阅读 3 分钟    次阅读   抽象工厂模式也是一种创建型模式。它是为...

  • 8

    通俗一点来讲,抽象工厂模式就是在工厂方法模式的抽象工厂类中规范多个同类产品。 工厂方法模式是针对一个产品系列的,而抽象工厂模式是针对多个产品系列的,即工厂方法模式是一个产品系列一个工厂,而抽象工厂模式是多个产品系列一个工厂类。 工厂模...

  • 4

    简单工厂问题 简单工厂中我们通过参数来返回不同的产品对象,如果管理的对象过多,这个工厂函数会比较庞大,且当我们需要增加一个新的产品时,需要修改这个工厂方法,违反开闭原则(对拓展开放,对修改关闭

  • 7

    Java设计模式-抽象工厂模式

  • 3

    软件设计模式与体系结构之抽象工厂模式与建造者模式 精选 原创 黎大学问 ...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK