简单工厂模式、工厂方法模式和抽象工厂模式有何区别?
一、简单工厂模式、工厂方法模式和抽象工厂模式的区别
简单工厂模式
简单工模式时类的创建模式,又叫做静态工厂方法(static Factory Method)。简单工厂模式是一个工厂对象决定创建出哪一种产品类的实例。它存在的目的很简单:定义一个创建对象的接口。
组成:
工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。
抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
工厂方法模式
是简单工厂模式的进一步抽象化和推广,工厂方法模式里不再只由一个工厂类决定那一个产品类应当被实例化,这个决定被交给抽象工厂的子类去做。
来看下它的组成:
抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。
具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。
抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。
具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。
抽象工厂模式
在抽象工厂模式中,抽象产品 (AbstractProduct) 可能是一个或多个,从而构成一个或多个产品族(Product Family)。 在只有一个产品族的情况下,抽象工厂模式实际上退化到工厂方法模式。
工厂方法模式 VS 抽象工厂模式
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。一个抽象工厂类可以派生出多个具体工厂类。每个具体工厂类可以创建多个具体产品的实例。
区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
延伸阅读:
二、抽象工厂优缺点
抽象工厂的优点:抽象工厂模式除了具有工厂方法模式的优点外,最主要的优点就是可以在类的内部对产品族进行约束。所谓的产品族,一般或多或少的都存在一定的关联,抽象工厂模式就可以在类内部对产品族的关联关系进行定义和描述,而不必专门引入一个新的类来进行管理。
抽象工厂的缺点:产品族的扩展将是一件十分费力的事情,假如产品族中需要增加一个新的产品,则几乎所有的工厂类都需要进行修改。所以使用抽象工厂模式时,对产品等级结构的划分是非常重要的。
以上就是关于简单工厂模式、工厂方法模式和抽象工厂模式有何区别的内容希望对大家有帮助。

相关推荐HOT
更多>>
linux的图形输入命令?
linux,按了ctrl+alt+F1,进入了类似纯命令行的界面,让输入login信息,怎么...1、是进入了linux控制台字符终端环境,要回到图形控制台,按 Ctrl + ...详情>>
2023-10-21 22:37:07
linux进入命令方式?
linux的进入磁盘命令1、查看磁盘空间 -df df命令以磁盘分区为单位查看文件系统中磁盘空间的使用情况。2、Linux系统在使用光盘、软盘或U盘时,必...详情>>
2023-10-21 19:51:43
linux永久挂载的命令?
Linux实现硬盘永久挂载,怎么查看有没有永久挂载?1、主要就是编辑文件 /etc/fstab,把需要永久挂载的磁盘号对应的目录写入此文件内,保存退出重...详情>>
2023-10-21 19:28:23
linux定时清理命令?
Linux定时删除日志文件/文件夹使用crontab命令生成定时任务,每天shell脚本可以自动进行日志清理。为了避免手工删除日志,考虑通过写shell脚本...详情>>
2023-10-21 16:33:28