文档章节

不想为了OOP而OOP

NDSM
 NDSM
发布于 2015/11/01 22:55
字数 308
阅读 125
收藏 0

    设计模块的时候习个人习惯于自顶向下。发现越往下模块越多,这时候习惯用接口类型的容器把不同实现类放到容器中,再根据情况调用接口。看上去好像是用观察者模式来调用实现模块重写的接口函数。

    一但有了OOP的思想就一发不可收拾。“幻想”着完美的架构,清晰UML,可往往变成了一大堆存放抽象业务类的容器,一大堆数据接口容器,然后在某个时刻发挥下“多态”的特性。结果是从数据源头到抽象业务类到具体实现的业务类到接口到接口实现类。看上去似乎是将OOP的封装、继承、多态用到了机制。画了UML看后惨不忍睹。其实有时候几个函数能实现的功能,干嘛搞一堆抽象类,接口类,实现类出来了? 为了拓展?为了适应以后需要? 可往往是一直都不会有扩展,一直都没有变化。等到真的又的大变化要重构的时候可能框架又变了。

© 著作权归作者所有

NDSM
粉丝 14
博文 47
码字总数 24990
作品 0
程序员
私信 提问
加载中

评论(2)

NDSM
NDSM 博主

引用来自“pengttyy456”的评论

代码应该在保持可读性和可测性的前提下保证业务功能的实现,之后的需求变化,再重构代码,以适应需求,从具体到抽象,而不是从抽象到具体,随需求的变化,写的代码自然会趋向于某种模式,而不是为了模式而模式。

赞同你的观点。
p
pengttyy456
代码应该在保持可读性和可测性的前提下保证业务功能的实现,之后的需求变化,再重构代码,以适应需求,从具体到抽象,而不是从抽象到具体,随需求的变化,写的代码自然会趋向于某种模式,而不是为了模式而模式。
PO-->OOP+AOP-->SOA软件开发思想演化

一、概述 PO(Procedure Oriented,面向过程编程):是一种以过程为中心的编程思想。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以...

AlexMahoneFBI
2016/03/31
140
0
OOP vs 过程式编码

今天早上我被问了一个奇怪的问题:"你那个PasswordLib的范例是OOP模式的,如果我想用过程式编程解决,那该怎么做?"。这个问题让我想了很久,因为这个功能需求自身就是过程化的。所以我觉得要...

王振威
2012/11/26
1K
0
OOP vs 过程式编码

今天早上我被问了一个奇怪的问题:"你那个PasswordLib的范例是OOP模式的,如果我想用过程式编程解决,那该怎么做?"。这个问题让我想了很久,因为这个功能需求自身就是过程化的。所以我觉得要...

junwong
2012/07/20
9.4K
40
深入理解多线程(二)—— Java的对象模型

上一篇文章中简单介绍过关键字的方式,其中,同步代码块使用和两个指令实现,同步方法使用标记符实现。后面几篇文章会从JVM源码的角度更加深入,层层剥开的面纱。 在进入正题之前,肯定有些基...

2017/12/16
0
0
你是PHP菜鸟,如果......

你是 PHP 菜鸟,如果你: 1. 不会利用如phpDoc这样的工具来恰当地注释你的代码 2. 对优秀的集成 开发 环境如Zend Studio或Eclipse PDT视而不见 3. 从未用过任何形式的版本控制系统,如Subcl...

anziguoer
2014/10/11
222
1

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.1K
14
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
38
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部