OOP与设计模式

OOP与设计模式

  • 抽象:是一种反映真实世界对象或现象中特定内容的模型,它能高精度地反映所有与特定内容相关的详细信息,同时忽略其他内容。

  • 封装:指一个对象对其他对象隐藏其部分状态和行为,而仅向程序其他部分暴露有限的接口的能力。绝大部分编程语言的接口和抽象类(或方法)都基于抽象和封装的概念。

  • 继承:是指在根据已有类创建新类的能力。

  • 多态:指程序能够检测对象所属的实际类,并在当前上下文不知道其真实类型的情况下调用其实现的能力。

对象与类的关系

image-20220125145545504

  • 依赖:对类 B 进行修改会影响到类 A 。

  • 关联:对象 A 知道对象 B。类 A 依赖于类 B。

  • 聚合:对象 A 知道对象 B 且由 B 构成。类 A 依赖于类 B。

  • 组合:对象 A 知道对象 B、由 B 构成而且管理着 B 的生命周期。类 A 依赖于类 B。

  • 实现:类 A 定义的方法由接口 B 声明。对象 A 可被视为对象B。类 A 依赖于类 B。

  • 继承: 类 A 继承类 B 的接口和实现, 但是可以对其进行扩展。对象 A 可被视为对象 B。类 A 依赖于类 B。

设计模式

  • 创建型模式提供创建对象的机制,增加已有代码的灵活性和可复用性。

  • 结构型模式介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效。

  • 行为模式负责对象间的高效沟通和职责委派。

优秀设计

  • 代码复用
    • 类,容器
    • 模式
    • 框架
  • 扩展性
    • 移植
    • 扩展
    • 改变

SOLID原则

[S]ingle Responsibility Principle 单一职责原则

  • 尽量让每个类只负责软件中的一个功能,并将该功能完全封装(你也可称之为隐藏)在该类中。

image-20220126105401639

image-20220126105413092

###[O]pen/Closed Principle 开闭原则

  • 在实现新功能时能保持已有代码不变。
  • 对于扩展,类应该是“开放”的;对于修改,类则应是“封闭”的。

image-20220126141335431

image-20220126141348322

[L]iskov Substitution Principle 里氏替换原则

  • 子类方法的参数类型必须与其超类的参数类型相匹配或更加抽象
  • 子类方法的返回值类型必须与超类方法的返回值类型或是其子类别相匹配
  • 子类中的方法不应抛出基础方法预期之外的异常类型
  • 子类不应该加强其前置条件
  • 子类不能削弱其后置条
  • 超类的不变量必须
  • 子类不能修改超类中私有成员变量的值

[I]nterface Segregation Principle 接口隔离原则

  • 尽量缩小接口的范围,使得客户端的类不必实现其不需要的行为

image-20220126160857817

image-20220126160907977

[D]ependency Inversion principle 依赖倒置原则

  • 高层次的类不应该依赖于低层次的类。 两者都应该依赖于抽象接口。抽象接口不应依赖于具体实现。具体实现应该依赖于抽象接口

    • 低层次的类实现基础操作(例如磁盘操作、传输网络数据和连接数据库等)。

    • 高层次类包含复杂业务逻辑以指导低层次类执行特定操作。

image-20220126161103850

image-20220126161112244

  • Copyrights © 2018-2022 Haojia Zhu
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信