ruby——Access Control

[复制链接]
查看11 | 回复0 | 2006-8-16 22:06:00 | 显示全部楼层 |阅读模式
在之前我们说过一个原则,我们尽量通过访问methods来实现对states的改变,而不是直接控制variables。ruby的设计者希望我们这么做。ruby认为,methods是控制states的,所以只要控制了methods的访问权限,就可以达到目的了

在描述访问控制的时候,我务必要强调一点的就是:ruby里面的访问控制(Access Control),主要描述的是一个receivers和messages的问题,而非java,c++里面的访问控制,因为ruby是一种动态语言,语言的本质决定了访问控制必须是动态的,下面说一下class definitions时候的问题,例如:

class Ex
protected
def method_protected
"proected"
end
private
def method_private
"private"
end
public
def method_public
"public"
end

def access_control
puts method_protected
puts method_private
puts method_public
end
end
class Ex2(NoMethodError)



改成protected
class Ex
protected
def method
"here"
end
end

class Ex2(NoMethodError)

这里使用外部的一个receiver来调用message,所以protected method无法使用
*关于receiver,message请参考《ruby系列教材(1):Ruby Is an Object-Oriented Language》
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行