河水加工成加工成自来水(用装饰模式实现)
来源:互联网 发布:函数响应式编程 编辑:程序博客网 时间:2024/04/30 06:02
装饰模式有四个重要角色: 抽象构件角色: Water 具体构件角色 : StreamWater 抽象装饰角色: WaterDecorators 具体装饰角色: FilterApparatus 日常生活中我们用的自来水的一个加工过程: 水是一个抽想的一个对象他拥有具体水的方法,和属性,在这里我们有一个具体的水对象,StreamWater (河水),我们希望将具体的水对象加工,而不去修改这个具体的水对象中的行为和方法,在这里有一个很重要的一个角色抽象装饰角色,(抽象装饰角色有两个很重要的特征:1.她继承抽象构件角色,2.她拥有构件的引用) ,她好比加工机器 加工机器一听就是一个很抽象的名词,所以每个具体的加工机器(FilterApparatus )都要继承这个抽象机器(WaterDecorators) ,这样具体你只要将一个构件也就是(河水)放入具体的机器加工,就可以改变其行为属性.
------------------------------------------------------
class WaterDecorator
{
static void Main(string[] args) {
StreamWater sw = new StreamWater();
sw.handleWater();
FilterApparatus ap = new FilterApparatus(sw);
ap.process();
ap.handleWater();
}
}
//抽象构件
abstract class Water {
private double cleanliness;
public double Cleanliness
{
set {
cleanliness = value;
}
get {
return this.cleanliness;
}
}
public abstract void handleWater();
}
//具体构件
class StreamWater : Water{
public StreamWater() {
this.Cleanliness = 45;
}
public override void handleWater()
{
Console.WriteLine("Stream water ={0}",Cleanliness);
}
}
//抽象装饰
abstract class WaterDecorators : Water{
protected Water w;
public WaterDecorators(Water w) {
this.w = w;
}
public override void handleWater()
{
w.handleWater();
}
}
//具体装饰
class FilterApparatus : WaterDecorators {
public FilterApparatus(Water w)
: base(w)
{
}
public void process() {
w.Cleanliness += 50;
}
}
- 河水加工成加工成自来水(用装饰模式实现)
- 加工
- 用户工号转换成姓名加工号
- 安卓中如何把一张图片加工成圆形
- 木条加工
- PCB加工
- 木材加工
- 木材加工
- 木材加工
- 木材加工
- 零件加工
- 零件加工
- 原木加工
- 用2BizBox管理外协加工
- 加工部件选择加工机器的算法实现—应用遗传算法
- SMT加工 宝安SMT加工 深圳SMT加工 石岩SMT加工 西丽SMT加工
- 各种加工方法的加工精度
- 有意识加工和无意识加工的容量
- flex中扩展combobox功能
- Exchange 2003 OWA 修改密码完美解决方案
- SEO,为什么要强调内部链接策略?
- .net webservice 报表
- Cas单点登录配置SSL时遇到的javax.net.ssl.SSLPeerUnverifiedException问题的解决方法
- 河水加工成加工成自来水(用装饰模式实现)
- IPC - msg
- OUTLOOK的通讯录导入问题
- oracle dual表的介绍
- 祝大家2008年元旦快乐! - CSDN个人空间项目组 ( hi.csdn.net )
- VB6 人民币小写转大写转换
- java里的中文乱码问题总结。
- 操作系统重装后,恢复以前的Oracle数据库
- 模拟退火算法