🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
🚀前言
面向对象技术(Object-oriented technology)是一种软件开发方法论,也是一种编程范式,它通过将系统中的实体抽象为对象,并将对象之间的关系和行为通过封装、继承和多态等机制进行描述和实现。
面向对象技术的特点包括:
概念 | 描述 |
---|---|
封装 | 数据和方法封装在一个对象中,通过限制对对象内部的访问来隐藏实现细节,提高了程序的模块化和安全性。 |
继承 | 一个类可以从另一个类派生而来,并继承父类的属性和方法。继承可以提高代码的重用性和扩展性。 |
多态 | 同一类型的对象在不同的上下文环境下可以表现出不同的行为。多态性使得程序可以根据对象的实际类型来选择对应的方法。 |
抽象 | 通过抽象可以从众多的实体中抽取出共同的特征和行为,形成抽象类或接口,便于设计和维护系统。 |
消息传递 | 面向对象的通信方式是通过对象之间的消息传递来实现的,对象之间通过发送和接收消息来进行沟通和协作。 |
面向对象技术广泛应用于软件开发领域,如面向对象分析与设计(OOAD)、面向对象编程语言(如Java、C++)等。它提供了一种更加模块化、可扩展、易维护的软件开发方法,能够提升开发效率和软件质量。
🚀一、面向对象技术
🔎1.面向对象基础
-
面向对象的基本概念
-
面向对象分析
-
面向对象设计
-
面向对象程序设计
-
面向对象测试
🔎2.UML
-
事物
-
关系
-
UML中的图
🔎3.设计模式
-
设计模式的要素
-
模式名称
-
问题
-
解决方案
-
效果
-
-
设计模式的原则
-
开闭原则
-
里氏替换原则
-
依赖倒转原则
-
接口隔离原则
-
最少知道原则(迪米特法则)
-
合成复用原则
-
-
创建型设计模式
与对象的创建有关
-
工厂模式(Factory Pattern)
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
- 子类决定实例化
-
抽象工厂模式(Abstract Factory Pattern)
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
- 抽象接口
-
单例模式(Singleton Pattern)
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
- 唯一实例
-
构造器模式(Builder Pattern)
将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
- 类和构造分离
-
原型模式(Prototype Pattern)
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
- 原型实例,拷贝
-
-
结构型设计模式
处理类或对象的组合
-
适配器模式(Adapter Pattern)
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
- 转换,兼容接口
-
桥接模式(Bridge Pattern)
将抽象部分与实现部分分离,使它们都可以独立的变化。
- 抽象和实现分离
-
组合模式(Composite Pattern)
将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
- 整体-部分,树形结构
-
装饰器模式(Decorator Pattern)
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。
- 附加职责
-
外观模式(Facade Pattern)
外观模式定义了一个高层接口,为子系统中的一组接口提供一个一致的界面,使得这一子系统更加容易使用。
- 对外统一接口
-
享元模式(Flyweight Pattern)
提供支持大量细粒度对象共享的有效方法。
- 细粒度,共享
-
代理模式(Proxy Pattern)
为其他对象提供一种代理以控制对这个对象的访问。
- 代理控制
-
过滤器模式/标准模式(Filter、Criteria Pattern)
这种类型的设计模式属于结构型模式
-
-
行为设计模式
对类或对象怎么交互和怎样分配职责描述
-
责任链模式(Chain of Responsibility Pattern)
通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一种处理这个请求。
- 传递请求、职责、链接
-
命令模式(Command Pattern)
将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。
- 参数化、日志记录
-
解释器模式(Interpreter Pattern)
给定一种语言,定义他的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子。
- 文法、解释
-
迭代器模式(Iterator Pattern)
提供一种方法来顺序访问一个聚合对象中的各个元素而不需要暴露该对象的内部表示。
- 顺序访问
-
中介者模式(Mediator Pattern)
用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
- 不直接引用
-
备忘录模式(Memento Pattern)
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将这个对象恢复到原先保存的状态。
- 保存,恢复
-
观察者模式(Observer Pattern)
定义对象间的一个一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并自动更新。
- 通知、自动更新
-
状态模式(State Pattern)
允许一个对象在其内部状态改变时,改变它的行为。
- 状态变成类
-
策略模式(Strategy Pattern)
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换,从而让算法可以独立于使用它的用户而变化。
- 算法替换
-
模板模式(Template Pattern)
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
-
访问者模式(Visitor Pattern)
表示一个作用于某个对象结构的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作。
- 新操作
-
空对象模式(Null Object Pattern)
-
-
J2EE模式
这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。
-
MVC 模式(MVC Pattern)
-
业务代表模式(Business Delegate Pattern)
-
组合实体模式(Composite Entity Pattern)
-
数据访问对象模式(Data Access Object Pattern)
-
前端控制器模式(Front Controller Pattern)
-
拦截过滤器模式(Intercepting Filter Pattern)
-
服务定位器模式(Service Locator Pattern)
-
传输对象模式(Transfer Object Pattern)
-
🚀二、面向对象技术(30分)(重点)
🔎1.面向对象基础
面向对象(Object-Oriented)是一种软件设计的思想和方法论,它将程序中的数据和操作数据的行为组织为一个个对象,并通过对象之间的交互来完成任务。
术语 | 解释 |
---|---|
类(Class) | 类是对象的抽象,描述具有相同属性和行为的一组对象,并提供对象的接口。 |
对象(Object) | 对象是类的实例,具有自己的状态(属性)和行为(方法),通过访问方法来操作状态。 |
封装(Encapsulation) | 封装将数据和对数据的操作封装在对象内部,隐藏实现细节,只暴露必要的接口给外部使用。 |
继承(Inheritance) | 继承通过创建新类来继承现有类的属性和方法。子类可以扩展或修改父类的行为。 |
多态(Polymorphism) | 多态性使得同一个方法可以在不同对象上具有不同的行为。调用共同的方法实现不同的行为。 |
抽象(Abstraction) | 抽象是将对象的共同特征和行为抽象出来,形成类的抽象描述。抽象类和接口是实现抽象的常用方式。 |
面向对象设计可以提高软件的可维护性、可扩展性和可重用性,使程序更加模块化和灵活。通过合理地使用类、对象、封装、继承、多态等基础概念和原则,可以设计出符合面向对象思想的软件系统。
🔎2.UML
UML(统一建模语言)是一种用于软件系统的设计、建模和文档化的标准化语言。作为软件设计师,使用UML可以帮助我们更好地理解和描述软件系统的结构和行为。
在软件设计过程中,UML为设计师提供了一系列的图形符号和规范,用于表示系统中的各种元素,如类、对象、关系、行为和状态。这些图形符号包括类图、对象图、活动图、时序图、状态图等。
使用UML可以帮助设计师进行需求分析、系统设计和系统架构等工作。通过绘制UML图,设计师可以清晰地展示系统的结构和行为,从而帮助开发人员更好地理解需求和实现软件系统。
UML还提供了一些常用的设计模式,用于解决常见的软件设计问题。设计师可以根据系统的需求选择适合的设计模式,并使用UML进行建模和描述。
🔎3.设计模式
在软件设计中,设计模式是一种被广泛接受并被证明可行的解决方案,用于解决常见的软件设计问题。设计模式可以提供一种可重用的解决方案,使软件设计人员能够更好地组织和管理代码,同时提高软件的可维护性和可扩展性。
一些常见的设计模式在软件设计中的应用:
设计模式 | 解释 |
---|---|
单例模式 | 确保一个类只有一个实例,并提供全局访问点。 |
工厂方法模式 | 定义一个创建对象的接口,由子类决定实例化哪个类。 |
抽象工厂模式 | 提供一个创建一系列相关或相互依赖对象的接口,而无需指定具体类。 |
建造者模式 | 将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 |
原型模式 | 通过复制现有对象的方式来创建新的对象。 |
适配器模式 | 将一个类的接口转换成客户端所期望的另一个接口。 |
桥接模式 | 将抽象与其实现分离,使它们可以独立地变化。 |
组合模式 | 将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 |
装饰器模式 | 动态地将责任附加到对象上,以扩展对象的功能。 |
外观模式 | 为子系统中的一组接口提供一个统一的接口,以简化客户端的使用。 |
享元模式 | 通过共享尽可能多的细粒度对象来有效地支持大量细粒度对象的复用。 |
代理模式 | 为其他对象提供一种代理,以控制对这个对象的访问。 |
模板方法模式 | 定义一个操作中的算法的骨架,将一些步骤延迟到子类中。 |
策略模式 | 定义了一系列的算法,将它们封装起来,并使它们可以相互替换。 |
命令模式 | 将请求封装为一个对象,从而使你可以使用不同的请求对客户进行参数化。 |
职责链模式 | 为某个请求创建一个接收者对象的链,并将请求沿着链传递,直到有一个对象处理它为止。 |
状态模式 | 允许对象在其内部状态改变时改变它的行为。 |
观察者模式 | 定义对象间的一种一对多的依赖关系,以便当一个对象的状态改变时,所有依赖于它的对象都会被自动通知并更新。 |
中介者模式 | 用一个中介对象来封装一系列对象之间的交互。中介者使各个对象之间不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 |
迭代器模式 | 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露其内部的表示。 |
访问者模式 | 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 |
备忘录模式 | 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 |
解释器模式 | 给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。 |
在实际的软件设计中还有许多其他的设计模式可供选择和应用,具体选择哪种设计模式取决于具体的需求和问题。
🚀感谢:给读者的一封信
亲爱的读者,
我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。
如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”