首页 >> 民生视野

JAVA與模式之工廠方法模式

民生视野  2019-11-15 07:06 字号: 大 中 小

  来源:东方头条 日期: 10:44:15 导读:在阎宏博士的《JAVA与模式》一书中开头是这样描述工厂方法模式的:工厂方法模式是类的创建模式,又叫做虚拟构造子(Virt

  在阎宏博士的《JAVA与模式》一书中开头是这样描述工厂方法模式的:

  工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式

  工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中

  那么工厂方法模式是在什么场景下使用呢,下面就以本人的理解举例说明:

  相信很多人都做过导入导出功能,就拿导出功能来说有这么一个需求:XX系统需要支持对数据库中的员工薪资进行导出,并且支持多种格式如:HTML、CSV、PDF等,每种格式导出的结构有所不同,比如:财务跟其他人对导出薪资的HTML格式要求可能会不一样,因为财务可能需要特定的格式方便核算或其他用途

  如果使用简单工厂模式,则工厂类必定过于臃肿因为简单工厂模式只有一个工厂类,它需要处理所有的创建的逻辑假如以上需求暂时只支持 种导出的格式以及2种导出的结构,那工厂类则需要6个if else来创建6种不同的类型如果日后需求不断增加,则后果不堪设想

  这时候就需要工厂方法模式来处理以上需求在工厂方法模式中,核心的工厂类不再负责所有的对象的创建,而是将具体创建的工作交给子类去做这个核心类则摇身一变,成为了一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个类应当被实例化这种细节

  这种进一步抽象化的结果,使这种工厂方法模式可以用来允许系统在不修改具体工厂角色的情况下引进新的产品,这一特点无疑使得工厂方法模式具有超过简单工厂模式的优越性下面就针对以上需求设计UML图:

  从上图可以看出,这个使用的工厂方法模式的系统涉及到以下角色:

  (:)

丁桂薏芽健脾凝胶能治腹泻吗
宝宝便秘吃啥好
孩子积食发烧怎么办
推荐资讯