文章目录

  • 1. 滥用 getter、setter 方法
  • 2. 滥用全局变量、全局方法
  • 3. 数据、方法分离

学习自 极客时间《设计模式之美》

1. 滥用 getter、setter 方法

  • 违反了封装特性,风格退化为面向过程编程

2. 滥用全局变量、全局方法

Constants 类

所有的常量都放在这个类中,不好:

  • 影响代码可维护性(类越来越大,查找费时)
  • 增加代码编译时间(依赖这个代码的文件很多,每次修改,依赖的文件都要重新编译)
  • 影响代码复用性(可能将一些无关的常量引入到新项目)

改进:

  • 拆解,跟哪个模块相关的参数放在一起
  • 哪个类用到常量,在其中定义

Utils 类

  • 不同的类都共同使用的方法,可以定义到 Utils 类中,它是面向过程的风格,想清楚是不是确实需要
  • 也要注意分类,FileUtils、IOUtils 等,做到职责单一

3. 数据、方法分离

  • 数据定义在一个类,方法定义在另一个类,是彻底的面向过程的风格

哪些代码设计看似是面向对象,实际是面向过程的?相关推荐

  1. 什么是面向对象 什么是面向过程 面向对象和面向过程的区别

    转自http://blog.163.com/wenxianliang08@126/blog/static/83583263201131611916893/ 面向过程就是分析出解决问题所需要的步骤,然后 ...

  2. Java面向对象相对于面向过程的优势?以及java创建对象的4中方式?

    文章目录 面向对象相对于面向过程的优势? java创建对象的4中方式? 面向对象相对于面向过程的优势? 答: 面向过程: 面向过程是一种自顶向下的编程. 面向过程优点:性能比面向对象高,因为类调用时需 ...

  3. python属于面向对象的还是面向过程的呀-python中的面向对象和面向过程

    一.面向对象和面向过程 一.什么是面向过程 核心是过程二字:面向过程是一种流水线的工作流程,是先做什么在做什么 二.什么是面向对象 核心 是对象二字:是一种编程思想,上帝思维,一切皆对象,编程中负责调 ...

  4. 函数式编程、面向对象编程、面向过程编程

    函数式编程: 它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用.举例来说,现在有这样一个数学表达式. 1. 代码简洁,开发快速 函数式编程大量使用函数, ...

  5. 云计算 java go c_面向对象编程的面向过程表示:c java go

    题目就这么抽象~.~其实一点都不抽象,老师以前也说过吧,面向对象就是建立在面向过程的基础上的. 下面这些主要是能让大家吸收一些较新鲜的编程思路,对于嵌入式编程大有裨益,对理解面向对象的底层封装全新的认 ...

  6. 面向对象编程与面向过程编程

    文章目录 一.什么是面向对象编程? 二.面向对象的特点是什么? 1.在上面的例子中,面向对象的特性是怎么表现出来的呢? 2.什么时候适合使用面向对象 三.Js 中的面向对象 1.对象包含什么 2.一些 ...

  7. 困扰?什么是面向对象什么是面向过程

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 相信很多初次学习编程的计算机小白或者入坑的开发的萌新,会被这两个概念折磨的欲仙欲死,说实话笔者在初次接触的时候也是被搞得头疼但是迫于学 ...

  8. 什么是面向对象编程和面向过程编程

    一.先来两小段通俗解释 1.面向过程(Procedure Oriented 简称PO :如C语言):(流程图) 从名字可以看出它是注重过程的.当解决一个问题的时候,面向过程会把事情拆分成: 一个个函数 ...

  9. 浅谈面向对象编程与面向过程编程

    面向对象编程 面向对象编程是一种更加复合人们思维方式的编程思想.在现实生活中存在许多不同种类的事物,但是这些事物之间存在着某种联系,我们在使用程序模拟实现这些事物时,就可以通过对象的形式对其进行描述. ...

最新文章

  1. sqlite 使用 cte 及 递归的实现示例
  2. 人脸识别python face_recognize_【python+face_recognition】人脸识别初始
  3. mongodb数据库在centos 下启动
  4. 深圳蛇口人民医院办理健康证,免费体检,2017年后国家承担体检费用
  5. 【习题 3-1 UVA - 1585】Score
  6. python变量未定义_引入模块的全局变量未定义
  7. IntelliJ IDEA 将 Maven 构建的 Java 项目打包
  8. 《数据结构与算法》——线性表之顺序表(SqList)总结
  9. 谷歌浏览器将网页保存为图片或者pdf
  10. s3cmd 安装使用指南
  11. 从战略到执行:业务领先模型 BLM 战略篇「战略意图」
  12. IARPA启动“奥丁”项目,发展生物特征识别技术
  13. 杭电1069 Monkey and Banana
  14. Python实例浅谈--Python与C/C++相互调用
  15. python爬虫技术可以干什么-利用爬虫技术能做到哪些很酷很有趣很有用的事情?...
  16. ResNet50网络结构
  17. 使用neon实现RGB888转RGB565
  18. 贪心:Fence Repair、Saruman's Army
  19. 手把手教你win10下安装Anaconda
  20. java telnet透传_透传模式DTU不能连接到TCP_Server

热门文章

  1. html表格里的超链接点不了,Excel如何添加和取消超链接 Excel超链接打不开是怎么回事...
  2. python compare excel_python简单操作excle的方法
  3. 【Linux分享】Linux常用命令+教程分享
  4. FBV(function base views) 顾名思义基于函数的视图类 CBV(class base views)基于类的视图类
  5. Pycharm 专业版 导入系统pip安装的包
  6. python大数据工程师 培训_大数据工程师学习之路
  7. c中session的用法
  8. java动态交叉表,SqlServer如何生成动态交叉表查询
  9. 十六进制转化为十进制
  10. 魔戒(思维+bfs)