设计模式之美:Private Class Data(私有类数据)
2014-04-16 13:46
411 查看
索引
意图
结构
参与者
适用性
效果
实现
实现方式(一):实现对初始化数据的封装。
[b]意图[/b]
封装类的初始化数据,控制对类的属性的更改,并保持类数据与使用数据的方法间的隔离。
Encapsulate class data initialization, control write access to class attributes and separate data from methods that use it.
[b]结构[/b]
![](http://images.cnitblog.com/i/175043/201404/161331165412198.png)
[b]参与者[/b]
MainClass
根据构造函数参数列表构造 DataClass 类的实例。
DataClass
封装数据。
[b]适用性[/b]
当以下情况成立时可以使用 Private Class Data 模式:
类的初始化数据是一次性的不可修改的数据。
需要控制对类的初始化数据的更改。
预防对初始化数据的不必要的更改。
[b]效果[/b]
减少类对外暴露的属性。
从类中移除了对数据的写权限。
[b]实现[/b]
实现方式(一):实现对初始化数据的封装。
《设计模式之美》为 Dennis Gao 发布于博客园的系列文章,任何未经作者本人同意的人为或爬虫转载均为耍流氓。
意图
结构
参与者
适用性
效果
实现
实现方式(一):实现对初始化数据的封装。
[b]意图[/b]
封装类的初始化数据,控制对类的属性的更改,并保持类数据与使用数据的方法间的隔离。
Encapsulate class data initialization, control write access to class attributes and separate data from methods that use it.
[b]结构[/b]
![](http://images.cnitblog.com/i/175043/201404/161331165412198.png)
[b]参与者[/b]
MainClass
根据构造函数参数列表构造 DataClass 类的实例。
DataClass
封装数据。
[b]适用性[/b]
当以下情况成立时可以使用 Private Class Data 模式:
类的初始化数据是一次性的不可修改的数据。
需要控制对类的初始化数据的更改。
预防对初始化数据的不必要的更改。
[b]效果[/b]
减少类对外暴露的属性。
从类中移除了对数据的写权限。
[b]实现[/b]
实现方式(一):实现对初始化数据的封装。
namespace PrivateClassDataPattern.Implementation1 { public class CircleData { public CircleData(double radius, Color color, Point origin) { this.Radius = radius; this.Color = color; this.Origin = origin; } public double Radius { get; private set; } public Color Color { get; private set; } public Point Origin { get; private set; } } public class Circle { private CircleData _circleData; public Circle(double radius, Color color, Point origin) { _circleData = new CircleData(radius, color, origin); } public double Circumference { get { return 2 * Math.PI * _circleData.Radius; } } public double Diameter { get { return 2 * _circleData.Radius; } } public void Draw(Graphics graphics) { } } }
《设计模式之美》为 Dennis Gao 发布于博客园的系列文章,任何未经作者本人同意的人为或爬虫转载均为耍流氓。
相关文章推荐
- 私有类数据模式(Private class data pattern)
- 【CDP-云设计模式】第5章,3.私有分配模式(Private Distribution Pattern)
- 通过miscdevice获得驱动私有数据结构体时file->private_data为空的解决方法
- 控制器数据逆传(代理设计模式解析)
- PHP设计模式--数据访问对象模式
- 设计一个时间类Time,要求: (1)包含时(hour)、分(minute)和秒(second)私有数据成员。 (2)包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载关于一时间减去另一时间
- 基于ArcEngine+C#实现的JLKDataManager空间数据平台架构设计
- 【JS 设计模式 】用单例模式(Singleton)来封装对数据的增删除改查
- PHP设计模式 三 (适配器 策略 数据映射)
- singletonclassDesign Patterns: Singleton Basics 设计模式:单例基础
- 设计模式之简单数据工厂
- 学点PYTHON基础的东东--数据结构,算法,设计模式---观察者模式
- 重新组织数据之十二 :Replace Record with Data Class(以数据类取代记录)
- Java200套2500G架构师视频,涵盖:分布式、集群、大数据、算法、设计模式、支付结算、在线视频、P2P,Q4407509
- [转]6种常见的数据加载模式设计
- 工厂设计模式 - 数据存储的特有方式
- 一个采取数据后的预警通知的设计----观察者模式的变通
- [php] Interface abstract里面的私有方法 -- private method of interface and abstract class
- 基于对WalkGIS 的地形数据建库处理模式的探讨 来自建筑工程与设计 2015(15)
- 分布式服务设计(该模式应用与所有服务器需要一份一致的内存数据时)