Modern C++ Design, Spring Framework和Ruby的Mixin....
来源:互联网 发布:c语言打印杨辉三角形 编辑:程序博客网 时间:2024/06/01 09:09
2005年11月04日 10:58:00
原文出处及讨论:http://www.blogjava.net/calvin/archive/2005/11/01/17678.html
作者:江南白衣
《Modern C++ Design》里的Policy-Base Class是Cpper得意的一样事情;
Spring 式IoC container 的依赖注入是Javaer得意的一样事情;
Ruby的Mixin特性是Rubyer得意的一样事情。
有趣的是,各自得意的事情,指向的是同一个问题:多重行为的组合。
1 .Policy-Base是混合使用模板与C++的多重继承达成的:
最终类多重继承模版类,由模版传入实际的行为类(Policy Class)。
template >class CheckingPolicy<
class SmartPtr : public CheckingPolicy
{...};
typedef SmartPtr>NoChecking< noCheckPtr;
class SmartPtr : public CheckingPolicy
{...};
typedef SmartPtr>NoChecking< noCheckPtr;
上段代码,在编译期把NoChecking类传入到SmartPtr中,组合成noCheckPtr类。而实战中,还会用到"template template parameter"....
2 .Java则紧守最古老的委托模式来达成:
最终类拥有实际施行各种行为的行为类的指针。所有最终类的方法都将委托给行为类来执行。如果行为多样时,采用基于接口编程。同时利用Java的反射特质,用IOC Container根据配置实现注入的自动化。
3. Ruby则倚仗自己的动态特性,直接在语言中内建了Mixin特性。
module Greetable
def greet
puts "Your age is, " + self.age
end
end
class Person
include Greetable
def initialize(name, age)
@name=name
@age=age
end
attr_reader :age
end
person=Person.new("Bruce",40)
person.greet
Your age is 40.
def greet
puts "Your age is, " + self.age
end
end
class Person
include Greetable
def initialize(name, age)
@name=name
@age=age
end
attr_reader :age
end
person=Person.new("Bruce",40)
person.greet
Your age is 40.
此段代码将Greetable类Minxin进了Person类里头,让其拥有了greet方法。
也多亏了Ruby的动态性,让Greetable可以打印一个自身毫不知情的,其实属于Person的属性age.
就因为同一样事情还有着C++模板、传统Delegate和新兴动态Minxin的选择,让我们这些工蚁,还觉得有些许的自由和左顾右盼的乐趣。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=522460
- Modern C++ Design, Spring Framework和Ruby的Mixin....
- Modern C++ Design, Spring Framework和Ruby的Mixin....
- Ruby学习笔记(7) - Module和Mixin
- Ruby-mixin机制和Java接口
- jsp和ruby和framework的关联
- ruby和oracle和framework的关联
- 《Modern C++ Design》Policies 和Policy Classes
- modern c++ design Int2Type的意义
- [C++] Modern C++ Design(MCD)学习笔记 && 测试代码
- Ruby中的Mixin (混入)
- sass文件的中的@mixin 和%
- spring和sybase和ruby的关联
- spring和ruby和apache的关联
- jsp和spring和ruby的关联
- ruby和spring和weblogic的关联
- Modern C++ Design
- Modern c++ design
- Modern c++ design 总结
- 重返Linux与C,地狱的又一季
- 在Dev-C++上搭建Winpcap的开发环境
- SWIG,C/C++类库与Java,Python等泛高阶语言的万能粘合剂
- debug经验一二三
- Java下的框架编程(2)-对泛型的没心没肺的用法和为擦拭法站台
- Modern C++ Design, Spring Framework和Ruby的Mixin....
- 程序员成长最快的环境
- Oracle 10g SQL 优化再学习
- 我最喜欢和关心的开源项目
- Python+wxWidgets快速开发桌面小程序
- BEA广州UG腐败日--1st time
- 各系Rails大点兵
- 關于在WIN32調用一些Zw系列的文件操作函數.
- Java下的框架编程(4)--Annotation vs XML vs Interface 最新一Round