Java

java中抽象的概念

勤劳的小蜜蜂 · 2月21日 · 2020年

OCP :开闭原则

重点理论:

  1. 单纯的 interface 可以统一方法的调用,但是它不能统一对象的实例化
  2. 面向对象: 实例化对象 调用方法
  3. 只有一段代码中没有 new 的出现,才能保持代码的相对稳定,才能逐步实现 OCP,实质就是一段代码如果要保持稳定,就不应该负责对象的实例化
  4. 面向对象编程,对象实例化是不可能消除的
  5. 把对象的实例化过程,转移到其他的代码片段中
  6. 代码中总是存在不稳定,隔离这些不稳定,保证其他的代码是稳定的
  7. 变化造成了不稳定
  8. 反射+工厂模式可以统一对象的实例化

抽象的难点在于 new

工厂模式(分离对象的实例化)

  • 简单工厂模式
  • 普通工厂模式
  • 抽象工厂模式

因为我们是面向对象编程,当业务或者用户的输入发生变化的时候,我们必须创建不同的对象去响应操作,这也就是只要是一段代码出现了 new 就是不稳定的原因。

类、对象、元类的关系

  • 类 是对象的抽象
  • 元类 是对类的描述

软件中的两大类的变化

  • 用户输入的变化
  • 需求的变化

改动配置文件算不算符合 OCP ?

  • 配置文件是系统外部的,而不是代码本身

IOC、DI、DIP 是什么?

DIP(Dependency Inversion Principle):依赖倒置

  • 高层模块不应该依赖底层模块,两者都应该依赖抽象
    • 高层:抽象
    • 底层:具体实现
  • 抽象不应该依赖细节
  • 细节应该依赖抽象

DI(Dependency Injection):依赖注入

依赖注入方式

  1. 属性注入(setter)
  2. 构造注入
  3. 接口注入

IOC

IOC 具体实现

  1. 对象能加入到容器中
  2. 在容器中的对象能够注入到代码中

IOC 抽象意义

把控制权交给用户 目的:灵活的 OCP

0 条回应