工厂设计模式分析

工厂和策略

对象关系温习

  • 关联:单关联、双关联、自关联;一方持有另一方的对象指针
  • 依赖(关联性弱一些):一方的方法里用到了对方的方法,其中对象指针是当做函数的参数传入的
  • 组合/聚合:包含关系,在代码层面就是一方持有另一方的对象(不是指针,是在自己对象内部开辟的空间)

简单工厂:

  • 为了符合单一职责原则:把对象的创建过程独立出来。放进工厂类实现而调用者不需要知道具体的构造过程。

  • 在工厂类中一开始分别设置不同的生产方法提供给使用者调用,这样调用者需要了解工厂的好几种方法,不符合

  • 迪米特原则:所以改成一个方法,调用者分别传不同的参数生产不同的对象。

  • 但是这样出现新的产品是就要修改工厂类又违反了开闭原则所以引出了(每加一个产品就要改工厂)

  • 本质是产品品种越来越多
    在这里插入图片描述

工厂方法:(注意:工厂方法里的工厂是抽象的但是原因是想抽象里面的生产方法,把生产方法交给不同的子类实现,子类只能生产一个类)

  • 在简单工厂的基础上把工厂类里的生产方法抽象交个具体的子类实现。这样增加新产品时只要增加新的工厂类和新的产品类。不用修改代码。

  • 符合了开闭原则

  • 本质是产品品种越来越多----到产生了系列
    - https://images2015.cnblogs.com/blog/880287/201608/880287-20160808165143559-1480072093.jpg

抽象工厂:(注意:这里的工厂抽出了几个生产方法交给子类实现,子类实现几个方法,每个方法生产一个单一类,本身可以生产多个类)

在这里插入图片描述

  • 通俗理解:
    • 系列就是:奔驰、宝马、奥迪
    • 族就是:suv、spv
类什么时候被初始化

1)创建类的实例,也就是 new 一个对象
2)访问某个类或接口的静态变量,或者对该静态变量赋值
3)调用类的静态方法
4)反射(Class.forName(“com.lyj.load”))
5)初始化一个类的子类(会首先初始化子类的父类)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值