HeadFirst设计模式开胃菜
前言
从今日起,陆续分享《HeadFirst设计模式》的读书笔记,希望能够帮助大家更好的理解设计模式,提高自己的编程能力。
今天要分享的是【HeadFirst设计模式开胃菜】,主要介绍了设计模式的基本概念、设计模式的四人组、HeadFirst设计模式的作者简介、面向对象的基本概念和原则等内容。
设计模式四人组(设计模式书籍作者)
HeadFirst设计模式作者简介
OO基本概念
- 抽象
抽象是隐藏实现细节的过程,只向用户公开功能。
在面向对象编程中,抽象是通过定义类和接口来实现的。
用户只知道对象的功能,而不需要了解其内部实现细节
- 封装
封装是将数据和代码封装到一个单元中的过程。
通过封装,可以限制对对象内部状态的直接访问,只能通过定义好的接口进行操作。
封装可以提高代码的安全性,并隐藏实现的细节
- 继承
继承允许一个类(子类)继承另一个类(父类)的属性和方法。
通过继承,可以复用代码,减少重复,并实现代码的模块化。
子类可以扩展或修改父类的行为,实现代码的扩展性
- 多态
多态是指允许不同类的对象对同一消息做出响应。
在面向对象编程中,多态通过接口和继承实现。
不同的对象可以对相同的函数调用做出不同的响应,增加了程序的灵活性和可扩展性
OO原则
- 单一职责原则(Single Responsibility Principle, SRP)
一个类应该只负责一个单一的功能或职责。
通过将不同的职责分离到不同的类中,可以提高代码的可读性、可维护性和可扩展性,并降低系统的耦合性
- 开闭原则(Open-Closed Principle, OCP)
软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。
这意味着软件实体应该通过扩展来满足新的需求,而不是修改已有的代码
- 里氏替换原则(Liskov Substitution Principle, LSP)
子类必须能够替换其父类并且表现出相同的行为。
这意味着在程序中,使用子类的地方应该能够完全替换为父类,而不会影响程序的正确性
- 依赖倒置原则(Dependency Inversion Principle, DIP)
高层模块不应该依赖于底层模块,两者都应该依赖于抽象。
抽象不应该依赖于具体实现,具体实现应该依赖于抽象
- 接口隔离原则(Interface Segregation Principle, ISP)
一个类不应该依赖于它不需要的接口。
接口应该被拆分成更小的、更具体的接口,以满足不同类的需求
- 合成复用原则(Composite Reuse Principle, CRP)
尽量使用对象组合而不是继承来实现代码复用。
对象组合可以让类之间的耦合度更低,更加灵活
- 迪米特法则(Law of Demeter, LoD)
一个对象应该只与它直接依赖的对象进行交互,不应该了解其他对象的实现细节。
尽量减少对象之间的耦合度
- 重用/释放等价原则(Acquire-Release Equivalence Principle, ARE)
在使用某个资源时,必须同时负责该资源的获取和释放。
如果一个对象负责获取某个资源,那么它也应该负责释放该资源
- 单例模式原则(Singleton Pattern Principle)
确保一个类只有一个实例,并提供全局访问点。
单例模式可以避免不必要的对象创建,从而提高程序的性能
设计模式分类
专业术语
- OO:Object-Oriented,面向对象
- UML: Unified Modeling Language,统一建模语言