架构整洁之道-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')
      }
   }

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

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

目录
相关文章
|
20天前
|
人工智能 自然语言处理
RWKV-7:RWKV系列开源最新的大模型架构,具有强大的上下文学习能力,超越传统的Attention范式
RWKV-7是RWKV系列的最新大模型架构版本,具有强大的上下文学习能力,超越了传统的attention和linear attention范式。本文详细介绍了RWKV-7的主要功能、技术原理及其在多语言处理、文本生成等领域的应用场景。
109 7
RWKV-7:RWKV系列开源最新的大模型架构,具有强大的上下文学习能力,超越传统的Attention范式
|
3月前
|
消息中间件 监控 测试技术
事件驱动架构是一种编程范式
【10月更文挑战第7天】事件驱动架构是一种编程范式
121 65
|
2月前
|
前端开发 JavaScript API
探索JAMstack架构:现代Web开发的新范式
【10月更文挑战第28天】JAMstack架构是一种现代Web开发方法,以其高性能、高安全性和易于维护的特点受到开发者青睐。本文深入探讨了JAMstack的核心概念、优势、工具链及其如何改变Web开发方式,包括静态网站生成、API驱动和预渲染等关键技术。
|
3月前
|
前端开发 JavaScript 安全
探索 JAMstack 架构:现代Web开发的新范式
【10月更文挑战第20天】JAMstack(JavaScript、APIs、Markup)架构是一种现代Web开发方法,通过预构建静态页面、动态功能通过APIs实现和依赖JavaScript,提供高性能、安全和可扩展的Web开发新范式。本文深入探讨其核心理念、优势、工具和最佳实践,帮助开发者理解和应用JAMstack。
|
3月前
|
前端开发 JavaScript 安全
探索JAMstack架构:现代Web开发的新范式
【10月更文挑战第7天】JAMstack是一种现代Web开发架构,代表JavaScript、APIs和Markup。本文介绍了JAMstack的核心概念、优势及实施步骤,包括内容设计、选择静态站点生成器、API集成、前端开发和部署托管。JAMstack提高了网站的性能、安全性和可扩展性,适用于营销网站、博客、电子商务和Web应用等多种场景。
|
3月前
|
运维 Kubernetes Cloud Native
探索云原生架构:构建现代应用的新范式
【10月更文挑战第4天】 在当今数字化时代,企业面临着前所未有的挑战与机遇。随着云计算技术的不断成熟,一种新的计算范式——云原生,正逐渐崭露头角,并成为构建现代应用的首选方式。本文将深入探讨云原生的概念、核心原则以及它如何改变我们设计、部署和运行应用程序的方式。我们将从实际案例出发,分析云原生技术如何帮助企业实现更高的敏捷性、弹性和可扩展性,同时降低运维成本,提升开发效率。通过阅读本文,您将获得关于云原生架构的全面理解,以及如何利用这一新范式推动业务创新和增长的实用见解。
78 4
|
3月前
|
设计模式 人工智能 算法
编程之旅:从代码到架构的感悟
【9月更文挑战第33天】在编程的世界里,代码不仅是实现功能的工具,更是连接思想与现实的桥梁。本文将通过个人的编程经历,分享从编写第一行代码到设计系统架构的旅程,探索编程背后的哲学和技术演变。我们将一起思考,如何在代码的海洋中找到自己的航向,以及在这个过程中如何不断成长和适应变化。
|
4月前
|
Cloud Native 持续交付 云计算
探索云原生架构:构建现代应用的新范式
在当今数字化浪潮中,云原生架构以其敏捷性、弹性和可扩展性成为企业技术转型的核心驱动力。本文将引领读者深入理解云原生的概念,剖析其关键技术组件——微服务、容器化、DevOps实践及持续交付/持续部署流程,并揭示这些技术如何相互协作,共同构建高效、可靠且易于管理的现代软件系统。通过对云原生架构的全面解读,我们旨在为开发者、架构师乃至企业决策者提供有价值的见解与指导,助力其在快速变化的市场环境中保持竞争力。
|
4月前
|
存储 缓存 Java
JAVA并发编程系列(11)线程池底层原理架构剖析
本文详细解析了Java线程池的核心参数及其意义,包括核心线程数量(corePoolSize)、最大线程数量(maximumPoolSize)、线程空闲时间(keepAliveTime)、任务存储队列(workQueue)、线程工厂(threadFactory)及拒绝策略(handler)。此外,还介绍了四种常见的线程池:可缓存线程池(newCachedThreadPool)、定时调度线程池(newScheduledThreadPool)、单线程池(newSingleThreadExecutor)及固定长度线程池(newFixedThreadPool)。
|
5月前
|
设计模式 算法 PHP
深入理解PHP中的数组操作探索编程之美:从代码到架构的思维转变
【8月更文挑战第24天】在PHP编程中,数组是基础且强大的数据结构。本文将通过浅显易懂的方式,介绍如何在PHP中高效地操作数组,包括创建、遍历、排序和过滤等常见任务。无论你是初学者还是有经验的开发者,这篇文章都会带给你新的启示。 【8月更文挑战第24天】在编程的世界中,代码不仅仅是冰冷的字符排列,它承载着思想、解决问题的智慧和创新的灵魂。本文将通过个人的技术感悟,带领读者从编写单一功能的代码片段出发,逐步深入到整个软件架构的设计哲学,探索如何将代码块转化为高效、可维护和可扩展的系统。我们将一起见证,当代码与架构思维相结合时,如何引发技术实践的革命性飞跃。