Readonly Version模式
来源:互联网 发布:商陆花软件 编辑:程序博客网 时间:2024/05/22 03:47
不知道大家有没有注意到ArrayList类有一个静态方法Readonly它只有一个类型为ArrayList的参数,并且返回值也是一个ArrayList,他的作用是返回某个ArrayList实例的只读版本。我把类似完成这种功能的一种设计称作Readonly Version模式。不知道有没有别人提出过,如果没有就是我第一个提出,^_^
该模式的应用场景:
类在某些应用场合不能修改成员值,即某些时候需要获得类实例的只读版本
实现要点:
1. ClassA有一个静态方法Readonly;此静态方法有一个ClassA的参数并返回该类型;
2. ClassA有一个私有的内嵌类ReadonlyClassA,从ClassA继承,ReadonlyClassA有一个只有一个参数为ClassA的构造函数。
3. ReadonlyClassA重写所有方法,对于不改变实例成员值得方法,直接返回值,而对于会改变成员值得方法抛出NotSupportException异常
其实现的类图:
代码实现:
public class ClassA
{
public static ClassA Readonly(ClassA instance)
{
return new ReadonlyClassA(instance);
}
private string _name;
public virtual string Name
{
get { return _name; }
set { _name = value; }
}
private class ReadonlyClassA : ClassA
{
private ClassA _classA;
public ReadonlyClassA(ClassA classA)
{
_classA = classA;
}
public override string Name
{
get
{
return _classA.Name;
}
set
{
throw new NotSupportedException("不支持指定操作。");
}
}
}
}
{
public static ClassA Readonly(ClassA instance)
{
return new ReadonlyClassA(instance);
}
private string _name;
public virtual string Name
{
get { return _name; }
set { _name = value; }
}
private class ReadonlyClassA : ClassA
{
private ClassA _classA;
public ReadonlyClassA(ClassA classA)
{
_classA = classA;
}
public override string Name
{
get
{
return _classA.Name;
}
set
{
throw new NotSupportedException("不支持指定操作。");
}
}
}
}
优点:
可以隐藏只读版本类的实现,而对外统一了只读版本和一般类的接口
缺点:
…….
第一次写设计模式的文章,那儿不对的请各位指正。
- Readonly Version模式
- readonly
- readonly
- readonly
- Ubuntu修复模式提示readonly问题
- readonly ---> readOnly
- const;readonly;static readonly
- PVCS命令行模式管理Version Label
- JVM类型与模式[Java -version]
- version
- version
- Version
- version
- @Version
- Version
- Version
- readonly & const
- const & readonly
- 请教matlab gui 设计
- 腾讯竟然如此限制言论自由!
- 我的博客哦 o(∩_∩)o...
- BT开源项目Snark源码分析
- DirectShow入门文章及VC环境配置
- Readonly Version模式
- Java自定义异常
- 男人的日子(经典)
- 网页制作常见105个问题解答
- 开博第一炮
- JSP实现小偷程序
- 男人的日子(经典) - 续
- JSP读取客户端文件
- 怎样使用AJAX进行应用程序开发