架构整洁之道-02 编程范式-面向对象编程

简介: 编程范式:范式是编程的方式,和语言无关。主要有三种方式:结构化编程、面向对象编程、函数式编程。

编程范式:范式是编程的方式,和语言无关。主要有三种方式:结构化编程、面向对象编程、函数式编程。

一个好的架构的基础是对面向对象设计的原理的理解和应用

面向对象是什么

把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。就是把现实中的事物都抽象成程序设计的“对象”。所以在很多面向对象编程语言的书籍中,都会说的一种答案:模拟现实世界的一种方式,即将世界所有的东西都对象化。

面向对象的本质:封装,继承和多态。这是面向对象语言必须支持的三件事。先从这些概念学习下。

封装

  • 把对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单元(即对象)中;
  • 另一层含义指“信息隐藏”,只有一部分函数知道这部分信息,如一个类的私有数据成员和公共成员函数
class UserInfo {
  public name: string;
  private age: string;
​
  getAge(name: string) {
    return this.age;
  }
}

UserInfo对象将 name 和 age 属性,以及getAge的行为封装成一个对象。通过使用相关修饰符对属性或方法,控制这部分信息可否被外界访问到。其中,age是个私有属性仅能在对象内部请求到,如果外部使用UserInfo对象是无法访问到的。

继承

继承就是在一个封闭范围内重新声明一组变量和函数。子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

   class BaseEntity {
      public name: string;
      public age: string;
​
   }
​
   class User extends BaseEntity {
      constructor(){
         super()
      }
   }

继承提高了类代码的复用性,提高代码的维护性,使用类和类之间产生了关系,这也是多态的前提,当然这也导致了类的耦合性提高

多态

多态是同一个行为具有多个不同表现形式或形态的能力。在TypeScript中经常实现方式是父类定义一个方法不去实现,让继承他的子类去实现,每一个子类有不同的表现

   class Operate {
      getName(): any {
         console.log('op-name')
      }
      getList(): any  {
         console.log('op-list')
      }
   }
​
   class UserOperate extends Operate {
      getName(): any {
         console.log('op-child-name')
      }
      getList(): any  {
         console.log('op-child-list')
      }
   }

多态存在三种条件:继承、充血、父类引用指向子类。

面向对象是通过使用多态性来获得对系统中每个源代码依赖的绝对控制的能力。它允许架构师创建一个插件架构,其中包含高层策略的模块独立于包含低层细节的模块。底层的细节被放到插件模块中,这些插件模块可以独立于包含高层策略的模块进行部署和开发。

目录
相关文章
|
3月前
|
消息中间件 Kubernetes 监控
构建高效微服务架构:后端开发的新范式
【5月更文挑战第29天】 在当今快速迭代的软件开发领域,微服务架构已经成为一种流行的设计模式,它通过将应用程序拆分成一组小而专注的服务来增强系统的可扩展性、灵活性和可维护性。本文深入探讨了如何构建一个高效的微服务架构,包括关键的设计原则、技术选型以及实践中常见的挑战与解决方案。我们的目标是为后端开发者提供一套实用的指南,帮助他们在构建现代化、分布式系统时做出明智的决策。
25 1
|
19天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:Kubernetes在微服务架构中的应用Python编程之旅:从基础到进阶
【7月更文挑战第31天】随着云计算技术的迅猛发展,云原生概念应运而生,它代表了一种构建和运行应用程序的全新方式。本文将通过实际代码示例,深入探讨Kubernetes这一云原生关键技术如何在微服务架构中发挥其强大的作用。我们将从容器化开始,逐步过渡到Kubernetes集群的搭建与管理,最后展示如何部署和管理一个微服务应用。
32 2
|
12天前
|
监控 安全 API
构建高效微服务架构:后端开发的新范式
【7月更文挑战第38天】随着现代软件开发的复杂性增加,传统的单体应用架构已经难以满足快速迭代和灵活部署的需求。微服务架构以其模块化、独立性和可伸缩性成为解决这一问题的关键。本文将探讨微服务的核心概念、设计原则以及在实现过程中可能遇到的挑战,并提供相应的解决方案,以期为后端开发者提供一种新的开发范式,帮助他们构建出更加高效、稳定且易于维护的系统。
|
1月前
编程之路:从代码到架构的心路历程
【7月更文挑战第9天】在数字世界的迷宫中,每一行代码都承载着创造者的梦想与挑战。本文将通过个人技术感悟的镜头,探索编程实践的深层次价值,从最初的代码编写到复杂的系统架构设计,揭示技术成长的内在逻辑和情感变迁。我们将一同穿梭在技术的森林里,寻找那些让代码生动起来的秘密。
22 2
|
3月前
|
机器学习/深度学习 设计模式 计算机视觉
深度学习在图像识别中的应用与挑战构建高效微服务架构:后端开发的新范式
【5月更文挑战第30天】 随着计算机视觉技术的飞速发展,深度学习已成为推动该领域进步的关键力量。本文旨在探讨深度学习在图像识别任务中的核心技术和面临的挑战,通过分析卷积神经网络(CNN)的结构和优化策略,以及新兴的对抗性网络和迁移学习等技术,揭示深度学习如何提高图像识别的准确性和效率。同时,文章还将讨论数据偏差、模型泛化能力和计算资源限制等问题对实际应用的影响。 【5月更文挑战第30天】 在本文中,我们将探讨一种现代软件工程实践——微服务架构。通过分析其核心原则和设计模式,我们旨在为开发者提供一个关于如何构建可扩展、灵活且高效的后端系统的指导。文章将详细讨论微服务的优势,挑战以及如何克服这些
|
3月前
|
消息中间件 运维 监控
构建高效微服务架构:后端开发的新范式
【5月更文挑战第31天】在现代软件开发中,随着业务需求的多样化和系统复杂性的增加,传统的单体应用架构逐渐显得笨重且难以适应快速变化。微服务架构作为一种新兴的后端开发模式,以其灵活性、可扩展性和独立部署的特点,成为解决这一问题的关键。本文将探讨微服务架构的核心概念、设计原则以及如何在实际项目中实现一个高效的微服务系统。
|
3月前
|
Cloud Native 算法 程序员
代码与禅意:编程中的哲学思考构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第30天】 在数字世界的繁花似锦之下,编程不仅仅是一种技能,更是一场关于逻辑、美学和哲学的深刻对话。本文将探讨编程过程中所体现出的哲学理念,从禅宗的角度出发,揭示代码背后蕴含的深层次意义。我们将一同走进程序员的内心世界,体会在面对复杂问题时,如何通过冥想般的编码实践,达到问题解决的顿悟。
|
3月前
|
监控 API 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第30天】随着现代应用程序的复杂性日益增加,传统的单体架构已不足以满足快速迭代和可伸缩性的需求。本文将探讨如何通过微服务架构来优化后端开发流程,实现敏捷开发和部署,并提高系统的可靠性与维护性。我们将深入分析微服务设计原则、技术栈选择、以及在实施过程中可能遇到的挑战,为开发者提供一种创新的后端开发解决方案。
|
3月前
|
消息中间件 数据管理 持续交付
构建高效微服务架构:后端开发的新范式
【5月更文挑战第30天】 在当今快速演变的软件开发领域,微服务架构已经成为推动创新和实现敏捷性的关键因素。本文将深入探讨如何构建一个高效的微服务系统,涵盖关键设计原则、技术选型及实践案例。我们将重点讨论如何通过优化服务间通信、数据管理和部署流程来提升系统的整体性能和可维护性。
|
3月前
|
监控 持续交付 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第28天】 在现代软件开发领域,随着业务需求的日益复杂和多变,传统的单体应用架构逐渐暴露出其扩展性和维护性的局限。微服务架构作为一种新兴的架构模式,以其服务的细粒度、独立性和弹性,正在成为后端开发的重要趋势。本文将探讨如何构建一个高效的微服务架构,涵盖设计原则、技术选型以及实践案例,旨在为后端开发者提供一种系统化的解决方案,以应对快速变化的业务挑战。