博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
现代新的简化”对象“和”面向对象“的定义
阅读量:7296 次
发布时间:2019-06-30

本文共 953 字,大约阅读时间需要 3 分钟。

传统面向对象定义已经过时,过去定义已经不能满足新语言新思想的发展,来自一文试图提出一种新的对象定义,以容纳适应新的发展形势。

新的对象定义是:An object is a first-class module that is invoked polymorphically

对象是能够被多态调用的顶级模块。

这里模块module定义可以是传统语言的类Class,也可以是函数语言的函数function。这样,面向对象定义比以前更加宽广,可以包含Scala等新的函数语言。

多态性polymorphically被定义成运行调用方式,而传统语言的继承只是其中一个代码机制的实现,在运行时实现多态,包括运行时的Mixin实现,在不改变不变动原来代码情况下将新的代码混入运行。这就更加侧重运行时的对象定义,而不是传统意义上编码阶段的对象定义了。

作者还总结了对象哪些特性是对象的重要本质特性,其中最重要的是可变状态Mutable State,值对象是一种不可变对象,大部分函数语言试图通过回避可变状态来实现高并发性能,但是这也许有些激进,因为可变状态的应用越来越多。

我们有办法从可变性分离出不变性,我们也有办法去控制可变性(先容纳再控制的哲学),比如在GOF设计模式中只有State, Memento, Observer, Decorator, 以及Chain or Responsibility 和 Adapter都需要可变性. 通过模式,我们达到重点分界可变状态和不可变状态,然后围而分别歼之的策略,这样,不可变的安全区域才会变得更加广阔,变成一种缺省语境。

作者将标识Identity也归为对象必须的特性,在领域驱动设计中我们知道实体的特点是标识,用来区别某个具体的对象,标识可以有能力来区别两个引用是否指向同一个对象,相同对象的定义是它们的引用都指向一个单一的对象创建的结果。

作者认为其他特性如类Class 或方法定义Multi-methods都不适合纳入新的对象定义之中,还有比如反射reflection, 静态类型static typing, 接口interfaces, first-class classes, 并发对象concurrent objects, 同步synchronization。

转载地址:http://oxynm.baihongyu.com/

你可能感兴趣的文章
设计模式(十)享元模式Flyweight(结构型)
查看>>
有图有真相!同是滑屏,荣耀Magic2不只比小米MIX3缝隙小,还更稳定
查看>>
AI+云 华为开启智能时代新纪元
查看>>
就是好骑!骑ofo小黄蜂和舒畅早晨say hi,跟闹心堵车say bye
查看>>
张旭豪:外卖概念的三点进化
查看>>
只用来保存JQuery lightbox图片用的
查看>>
C#学习笔记——MDI窗体(多文档界面)
查看>>
C++命名空间 namespace的作用和使用解析
查看>>
如果觉得职业看不到头,趁早换工作吧
查看>>
httpClient学习的初步认识
查看>>
SpringMVC 中整合JSON、XML视图一
查看>>
android151 笔记
查看>>
upload size of asp.net
查看>>
《算法设计手册》面试题解答 第三章:数据结构
查看>>
Windows Phone笔记(3)触摸简介
查看>>
Django使用心得(二)
查看>>
13个JavaScript图表图形绘制插件
查看>>
面状县级行政区划转地级行政区划,并关联属性字段
查看>>
用Session和唯一索引字段实现通用Web分页功能
查看>>
升级 Visual Studio 2015 CTP 5 的坑、坑、坑
查看>>