首页 > 编程语言 >工程中的“面向对象”编程

工程中的“面向对象”编程

时间:2023-11-21 18:11:56浏览次数:36  
标签:脚本 配置 工程 处理 编程 面向对象 对象

工程中的“面向对象”编程

在工程处理中,工程师很容易写出碎片的脚本代码,例如处理服务器上的脚本:

  1. 假设了一些存在的环境变量、目录结构、配置和数据
  2. 脚本基于这些假设开始做一堆中间处理,并最终得到一些输出数据。

即使有了docker,有了k8s,无论是在docker外,还是docker内,还是会有很多这样的工程处理脚本。

这些工程处理脚本非常容易碎片化,写这样的代码也很容易就没有模块化,缺乏明显的数据结构与算法的分离。

一种好的编程方式是,一旦开始写这样的脚本,从一开始就做“面向对象”抽象,例如

  1. 设计一个 Config 对象,处理好全局配置的处理,做好不同名称空间的配置的正交组织,做好从配置服务、本地配置、以及命令行配置的管理。
  2. 设计一个 Option 对象,处理好命令行参数和选项的管理。
  3. 设计一个 Machine 对象,这个对象封装了内部的各种处理细节,对外暴露出一个逻辑上机器的目录结构、配置和数据。
  4. 设计一个 Group 对象,处理好一组 Machine 的组织和管理。
  5. 设计一个 System 对象,这个对象组织好 Config, Option, 一个到多个 Group 的组织。
  6. 设计一系列的 Executor 对象,遵循单一职责原则,处理好每个明确定义职责的基于 Config, Option, Group 环境下的明确任务执行。
  7. 设计一系列的 Schduler 对象,负责调度应用层的任务到 Executor 执行。

这是一个基本的工程中的“面向对象”编程,无论在哪一个抽象层上,这些都免不了。

--end--

标签:脚本,配置,工程,处理,编程,面向对象,对象
From: https://www.cnblogs.com/math/p/oop-in-engine.html

相关文章

  • 计算机科学与技术之网络编程 Windows下VC6.0 网络SOCKET编程C语言实现(服务端)
    在VC6.0平台用C语言实现网络SOCKET通信一.在VC6.0平台创建Win32ConsoleApplication工程工程名称自拟(或输入firstSocket)添加新建项文件C++SourceFile 文件名自拟,后缀.c(如firstSocket.c)在firstSocket.c加入头文件#include<winsock2.h>链接动态库#pragmacomment(l......
  • 编程之旅,扬帆起航
    嗨,亲爱的读者!我是顾平安,感谢您点开我的这篇博客。作为一个对技术充满热情的新手,我会在博客园分享我的学习之旅,希望能与你们一起成长。自我介绍我是某机构的前Python讲师,从大学起对计算机科学和编程充满了浓厚的兴趣。我的编程旅程始于2020年,当时我被爬虫技术深深吸引。从那......
  • 零代码编程:用ChatGPT根据视频标题来批量重命名字幕文件
    现在有很多视频文件:还有视频相对应的字幕文件:F:\儿童学习教育\Abadas.适合2岁以上.BBC儿童学习单词的动画\abadas字幕两者的文件标题不一样,现在要将字幕文件的标题全部根据视频文件来重命名。在chatGPT中输入提示词:你是一个Python编程专家,要完成一个根据视频标题来批量重命名字幕文......
  • Spring_202311_21_2 2. AOP面向切面编程
    Spring_202311_21_22. AOP面向切面编程AOP:全称是AspectOrientedProgramming即:面向切面编程。简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强。即当需要扩展功能时,传统方式采用纵向继承方式......
  • Android并发编程高级面试题汇总(含详细解析 八)
    Android并发编程高级面试题汇总最全最细面试题讲解持续更新中......
  • Java开发工程师的前景:掌握未来的关键
    随着科技的飞速发展,Java开发工程师在当今的IT领域扮演着越来越重要的角色。Java作为一种强大的编程语言,被广泛应用于企业级应用、移动应用、Web应用等多个领域。在这个充满竞争的时代,掌握Java技术等于掌握了开启未来大门的钥匙。一、Java的稳定性和广泛性Java自1995年问世以来,一直......
  • 异步编程 async、await
    1、使用async修饰符标记的方法称为异步方法1)异步方法的返回值一般是Task<T>,T是真正的返回值类型,Task<int>。惯例:异步方法名字以Async结尾。2)即使方法没有返回值,也最好把返回值声明为非泛型的Task。 3)调用泛型方法时,一般在方法前加上await关,这样拿到的返回值就是泛型指定......
  • C#编程精要:深入理解继承、多态、抽象和接口
    文章目录继承基类和派生类多重继承子类调用父类构造器子类调用父类方法多态静态多态性函数重载运算符重载动态多态性抽象类抽象属性抽象方法虚方法方法重写方法覆盖覆写和覆盖的区别密封类(sealed)接口接口特点定义接口实现接口接口继承显式实......
  • 《Unix/Linux系统编程》测试 (2)
    13.14server回答代码中有哪些宏,都在哪定义的有三个宏定义,分别是:MAX:定义为256SERVER_HOST:定义为"localhost"SERVER_PORT:定义为1234这些宏定义出现在代码的开头,在包含标准库头文件之后。这些宏定义用于给常量赋值,并在后续代码中使用这些常量client回答代码中有哪些宏......
  • 零代码编程:用ChatGPT将SRT字幕文件批量转为Word文本文档
    一个文件夹中有多个srt视频字幕文件,srt文件里面有很多时间轴:现在想将其批量转为word文档,去掉里面与字符无关的时间轴,在ChatGPT中输入提示词:你是一个Python编程专家,要完成一个批量将SRT字幕文件转为Word文本文档的任务,具体步骤如下:打开文件夹:F:\儿童学习教育\Abadas.适合2岁以上.BBC......