设计模式-工厂模式

属于创建型模式,提供了一种创建对象的最佳方式,我们创建对象时不会对客户端暴漏创建逻辑,并且通过使用一个共同的接口来指向新创建的对象

功能:可以一定程度上解耦,消费者和产品实现类隔离开,只依赖产品接口。

           可以一定程度增加扩展性,若增加一个产品的实现,只需要实现产品的系欸口,修改工厂创建产品的方法,消费者可以无感知

           可以一定程度增加代码的封装性,可读性。清楚代码的结构,对于开发者来说很少的代码量就可以完成很多的工作

工厂模式分为:简单工厂模式,工厂方法模式,抽象工厂模式

简单工厂模式又叫静态工厂方法模式,是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。简单工厂模式就是通过一个全能类,根据外界传递的信息创建哪个具体类的对象,。

通过一个简单的工厂类,根据课程名创建相应的对象

简单工厂模式违背了开闭原则,难以扩展

工厂方法模式是对简单工厂模式进行了抽象化,符合了开闭原则,实现了可扩展

工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中,核心工厂类不负责产品的创建,这样的核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下扩展新的业务

课程的抽象工厂

java课程的具体工厂

python课程的具体工厂

工厂方法的好处就在于提供创建的产品接口给使用者就行,无论产品的类型如何变化,只要根据接口创建的产品功能没有变化,使用者就无需任何变动。

抽象工厂方法:

一号产品

2号产品

抽象工厂

具体工厂类

抽象工厂模式的优点:

抽象工厂模式除了具有工厂方法模式的优点外,最主要的优点就是可以在类的内部对产品族进行约束,所谓的产品族,一般或多或少都存在一定的关联,抽象工厂模式就可以在类内部对产品族的关联关系进行定义和描述,不需要引入一个新的类进行管理

缺点:

产品的扩展是很麻烦的,如果需要添加一个新得产品,几乎所有的工厂类都需要进行修改

抽象工厂模式与工厂方法模式的区别?

抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象,他与工厂方法模式的区别在于,工厂方法模式针对的是一个产品的等级结构,而抽象工厂模式则是针对多个产品的等级结构。通常一个产品结构表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自用一个接口或抽象类,而抽象工厂模式则不一样

抽象工厂模式中,有一个产品族的概念,所谓的产品族,是指位于不同产品等级结构中相关联的产品组成的家族,抽象工厂模式所提供的一系列产品就组成了一个产品族,而工厂方法提供的一系列产品称为一个等级结构。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值