面向对象静态语言的模型
2016-01-27 14:11
260 查看
基本模型:(Java,C#,Scala)
接口,类
接口可以继承多个接口
类可以实现多个接口
类只能继承一个父类
扩展模型一:静态扩展(C#,Swift)
静态扩展通常属于项目后期的一种行为。
静态扩展针对特定的类型,可重用性不佳。
Extension可以扩展一个类,为类添加新的方法。
扩展模型二:动态组合(Scala)
Trait类似于一个带全部或部分实现的接口。
Trait的设计是属于项目前期明确的设计行为。
Trait是一个独立的结构,被设计用来支持重用。
在声明一个类时,Trait可以静态混入一个类的定义中。
在实例化一个类时,Trait可以动态的混入到一个类的实例中。
在Trait之前由于不支持实现的多继承,因此如果一个类要使用其它类的功能,就需要实例化一个其它类的实例,这相当于在运行过程中动态的把两个类的功能组合起来了。使用Trait之后则可以以声明的形式来组合代码,这样写出的代码更具可读性,而且如果有问题在编译阶段就可以发现。
接口,类
接口可以继承多个接口
类可以实现多个接口
类只能继承一个父类
扩展模型一:静态扩展(C#,Swift)
静态扩展通常属于项目后期的一种行为。
静态扩展针对特定的类型,可重用性不佳。
Extension可以扩展一个类,为类添加新的方法。
扩展模型二:动态组合(Scala)
Trait类似于一个带全部或部分实现的接口。
Trait的设计是属于项目前期明确的设计行为。
Trait是一个独立的结构,被设计用来支持重用。
在声明一个类时,Trait可以静态混入一个类的定义中。
在实例化一个类时,Trait可以动态的混入到一个类的实例中。
在Trait之前由于不支持实现的多继承,因此如果一个类要使用其它类的功能,就需要实例化一个其它类的实例,这相当于在运行过程中动态的把两个类的功能组合起来了。使用Trait之后则可以以声明的形式来组合代码,这样写出的代码更具可读性,而且如果有问题在编译阶段就可以发现。
相关文章推荐
- eclipse + tomcat web project引用其他java project配置
- Integer
- Eclipse插件开发4-SWT布局
- 解决使用mybatis出现ORA-01000问题
- 解读Linux安全机制之栈溢出保护
- 设计模式之:策略模式(strategy)
- 双目测距与三维重建的OpenCV实现问题集锦(四)三维重建与OpenGL显示
- usb之Android_probe
- iOS 开发源码的地址
- 学习搭建自己的网络MNIST在caffe上训练学习
- Spring整合Quartz实现动态定时任务
- 集合框架的使用---Majority Number III
- FPGA 四或门
- hdu1372 Knight Moves (BFS)
- 在整合springmvc+mybatis+ecache时候报错如下: Another unnamed CacheManager already exists in the same VM.
- 【UGUI】unity3D中ugui事件
- 双目测距与三维重建的OpenCV实现问题集锦(三)立体匹配与视差计算
- @property
- Java-正确使用equals和hashCode方法
- 关于安卓数据库操作