抽象没做好,何谈有类

简介: 抽象没做好,何谈有类

之前写过一篇文章是“面向对象的基础是抽象”(39条消息) 面向对象的基础是抽象_赛男丨木子丿小喵的博客-CSDN博客

当再提到这个问题得时候有了新的认知,尤其是这样得一句话“不用关心他是怎么做的,只要做成就可以了。抽象就是不关注内部具体是什么”。结合老师提到得一个问题,如何理解下面两句话:

”①我们要注重多少人来干事,而不是干什么事。

②我们要注重谁来干事,而不是怎么干事。

这与面向对象的抽象有什么关系?“

一、问题是最后一句话,”这与面向对象的抽象有什么关系?“,现在只说”抽象“,还没有谈到”类“的概念,所以还没有到封装,继承和多态,这说明什么问题,没有类,就无需关注类中的方法,方法中可能会说让别人做什么事情。我的脑袋中一直不能理解为什么不能说让别人做什么,比如打水这个例子,我也没有关心具体水是怎么打的,为什么不是面向对象的抽象,问题就在抽象这里,现在说的就是”抽象“,抽象还没做好,就没有类的事,没有类的事就没有类之间的关系。当然更不用关心一件事具体怎么去实现,回到抽象的解释--抽象就是不关注内部具体是什么。


二、关注句子的主语而非整个句子,再进一步说,关注除了句子的谓语之外的其他成分都可以,主语,宾语,总之名词性的部分,什么意思,你要抽象谁,这个谁是个名字,还拿打水这件事来说,抽象过程中注重对象,而不是过程,场地,打水人,打水工具,受水人,水等等,如果再进一步抽象,参与者,使用的工具,场所(UI),材料(参数)等等,唯独不该关心”让谁打水“。往上抽象,类越来越少,不光为了实现复用,也为了实现代码自动化,可扩充可维护。


三、关于粒度,越大,代码的“颗粒”越模糊,越接近一个逻辑上的概念;粒度越小,代码的“颗粒”越清晰,越接近具体的实现。通常情况下粗粒度的复用性要差,细粒度的、更具体反而更容易复用。也可以理解成抽象的类粒度越小,复用性越高,也就是上面的例子中提到的,抽象出场地,打水人,打水工具,受水人,水等等。


总结,面向对象的基础是抽象,因为没有抽象就没有类,没有类就没有封装继承和多态。


相关文章
|
4月前
|
人工智能 达摩院 自然语言处理
类与类之间的协作模式问题之策略模式影响我们在工作中决策过程的问题如何解决
类与类之间的协作模式问题之策略模式影响我们在工作中决策过程的问题如何解决
|
5月前
软件复用问题之复用性风险是如何定义的
软件复用问题之复用性风险是如何定义的
|
7月前
|
数据采集 设计模式 架构师
|
设计模式 Java uml
你的职责链模式符合五大原则吗?-系统学习九
工作之余对于用到的设计模式进行总结再梳理,发现职责链模式的妙处以及五大原则的指导下更能发挥职责链模式的优势于是乎便有了这篇博文的诞生
|
设计模式 IDE Java
【Java设计模式 规范与重构】 四 小型重构的手段:规范的十五条军规
【Java设计模式 规范与重构】 四 小型重构的手段:规范的十五条军规
138 0
|
设计模式 Java 测试技术
【Java设计模式 规范与重构】 三 大型重构的手段:高内聚,低耦合
【Java设计模式 规范与重构】 三 大型重构的手段:高内聚,低耦合
184 0
|
消息中间件 JavaScript 小程序
架构设计:为什么说复用是邪恶的?
架构设计:为什么说复用是邪恶的?
|
设计模式 前端开发 Java
职责驱动设计以及状态模式的变化
职责驱动设计以及状态模式的变化
职责驱动设计以及状态模式的变化
|
运维 JavaScript 安全
产品相关 细说软件产品和业务 & 业务过程(流程) & 业务逻辑
产品相关 细说软件产品和业务 & 业务过程(流程) & 业务逻辑
156 0