对象关系温习
- 关联:单关联、双关联、自关联;一方持有另一方的对象指针
- 依赖(关联性弱一些):一方的方法里用到了对方的方法,其中对象指针是当做函数的参数传入的
- 组合/聚合:包含关系,在代码层面就是一方持有另一方的对象(不是指针,是在自己对象内部开辟的空间)
简单工厂:
-
为了符合单一职责原则:把对象的创建过程独立出来。放进工厂类实现而调用者不需要知道具体的构造过程。
-
在工厂类中一开始分别设置不同的生产方法提供给使用者调用,这样调用者需要了解工厂的好几种方法,不符合
-
迪米特原则:所以改成一个方法,调用者分别传不同的参数生产不同的对象。
-
但是这样出现新的产品是就要修改工厂类又违反了开闭原则所以引出了(每加一个产品就要改工厂)
-
本质是产品品种越来越多
工厂方法:(注意:工厂方法里的工厂是抽象的但是原因是想抽象里面的生产方法,把生产方法交给不同的子类实现,子类只能生产一个类)
-
在简单工厂的基础上把工厂类里的生产方法抽象交个具体的子类实现。这样增加新产品时只要增加新的工厂类和新的产品类。不用修改代码。
-
符合了开闭原则
-
本质是产品品种越来越多----到产生了系列
抽象工厂:(注意:这里的工厂抽出了几个生产方法交给子类实现,子类实现几个方法,每个方法生产一个单一类,本身可以生产多个类)
- 通俗理解:
- 系列就是:奔驰、宝马、奥迪
- 族就是:suv、spv
类什么时候被初始化
1)创建类的实例,也就是 new 一个对象
2)访问某个类或接口的静态变量,或者对该静态变量赋值
3)调用类的静态方法
4)反射(Class.forName(“com.lyj.load”))
5)初始化一个类的子类(会首先初始化子类的父类)