public class Ring : Decorator

{

public override void Show()

{

Console.WriteLine("铃声功能 ");

base.Show();

}

}

public class Office : Decorator

{

public override void Show()

{

Console.WriteLine("Office拓展功能 ");

base.Show();

}

}

public class Video_Call : Decorator

{

public override void Show()

{

Console.WriteLine("视频电话功能 ");

base.Show();

}

}

public class Handwriting : Decorator

{

public override void Show()

{

Console.WriteLine("手写功能 ");

base.Show();

}

}    public class Surfing : Decorator

{

public override void Show()

{

Console.WriteLine("上网功能 ");

base.Show();

}

}

public class QQ : Decorator

{

public override void Show()

{

Console.WriteLine("QQ功能 ");

base.Show();

}

}

public class Fetion : Decorator

{

public override void Show()

{

Console.WriteLine("飞信功能 ");

base.Show();

}

}

public class Wolf : Decorator

{

public override void Show()

{

Console.WriteLine("狼牙功能 ");

base.Show();

}

}

  客户端代码如下:

   static void Main(string[] args)

{

Mobile mobile = new Mobile("Hoogle");

Console.WriteLine("\n第一款全能装饰方式:");

Game game = new Game();

Touch touch = new Touch();

Photo photo = new Photo();

Memory memory = new Memory();

MP3 mp3 = new MP3();

Recording recording = new Recording();

Ring ring = new Ring();

Office office = new Office();

Video_Call video_call = new Video_Call();

Handwriting handwriting = new Handwriting();

Surfing surfing = new Surfing();

QQ qq = new QQ();

Fetion fetion = new Fetion();

Wolf wolf = new Wolf();

game.expand(mobile);

touch.expand(game);

photo.expand(touch);

memory.expand(photo);

mp3.expand(memory);

recording.expand(mp3);

ring.expand(recording);

office.expand(ring);

video_call.expand(office);

handwriting.expand(video_call);

surfing.expand(handwriting);

qq.expand(surfing);

fetion.expand(qq);

wolf.expand(fetion);

wolf.Show();

Console.WriteLine("\n另一种装饰方式:");

Ring rings = new Ring();

Office offices = new Office();

Video_Call video_calls = new Video_Call();

Handwriting handwritings = new Handwriting();

Surfing surfings = new Surfing();

QQ qqs = new QQ();

Fetion fetions = new Fetion();

Wolf wolfs = new Wolf();

rings.expand(recording);

offices.expand(ring);

video_calls.expand(office);

handwritings.expand(video_call);

surfings.expand(handwriting);

qqs.expand(surfing);

fetions.expand(qq);

wolfs.expand(fetion);

wolfs.Show();

Console.Read();

}

显示结果:

第一款全能装饰方式:

游戏功能 触屏功能 照相功能 内存卡扩展功能 MP3功能 录音功能 铃声功能 Office拓展功能 视频电话功能 手写功能 上网功能 QQ功能 飞信功能 狼牙功能

另一种装饰方式:

录音功能 铃声功能 Office拓展功能 视频电话功能 手写功能 上网功能 QQ功能 飞信功能 狼牙功能

以上就是我用装饰模式设计手机的全过程,其中难免存在不足或漏洞,欢迎大家提出自己的意见和建议,谢谢!

曾祥瑚

2010.06.28  15:06

转载于:https://blog.51cto.com/hoogle/340460

Hoogle之装饰模式设计手机(下)相关推荐

  1. 【21】面向流水线的指令设计(下):奔腾4是怎么失败的?

    [计算机组成原理]学习笔记--总目录 [21]面向流水线的指令设计(下):奔腾4是怎么失败的? 引言 一.重要知识点 1.CPU及计算机整机性能衡量标准[SPEC跑分程序]: 2.大家判断CPU性能的 ...

  2. NVIDIA Turing Architecture架构设计(下)

    NVIDIA Turing Architecture架构设计(下) GDDR6 内存子系统 随着显示分辨率不断提高,着色器功能和渲染技术变得更加复杂,内存带宽和大小在 GPU 性能中扮演着更大的角色. ...

  3. 精讲23种设计模式-基于装饰模式~设计多级缓存框架

    文章目录 一.装饰模式 1. 回顾多级缓存基本概念 2. 装饰模式基本的概念 3. 装饰模式应用场景 4. 装饰者模式定义 5. 基于Map手写Jvm内置缓存 二.手写一级与二级缓存 2.1. red ...

  4. android没有输入焦点类控件的输入法调用,Android 手机下输入框获取焦点时, 输入法会挡住输入框...

    // Android 手机下输入框获取焦点时, 输入法会挡住输入框 // 解决方法: // Android 手机下, input 或 textarea 元素聚焦时, 主动滚动 if (/Android ...

  5. PHP+JS+HTML 手机下拉加载分页

    HTML循环页面 can 视图容器参数 dir 传值(自定义) <div class="fhsj"><ul class="lbt" id=&q ...

  6. 华为手机下拉菜单变大_华为手机下拉菜单变少了 华为下拉通知栏变白色

    华为荣耀7的下拉菜单不见了怎么办? 1.在手机桌面上找到[设置]按钮,点击"设置"去设置界面找回2.点击"设置"后,进入"常用设置",在右边 ...

  7. 25种动态图形设计手机竖屏AE模板下载

    25种动态图形设计手机竖屏AE模板下载,很容易使用.你可以用们来显示你最喜欢的照片和视频剪辑.用这个整洁和动态动画的AE模板制作视频吧~ 下载地址:https://www.dongshe.net/87 ...

  8. 搜索引擎排名威新hfqjwl_手机下拉框微莘hfddjwl,手机下拉框微信hfqjdwl作词

    百度下拉框是什么呢,相信大家都很熟悉.百度作为国内领头老大搜索引擎,拥有十几亿的用户量,在流量方面可谓是资源充足. 那么搜索非常有效获取流量的方法老大是通过百度的下拉框筛选相关 关键词,当大家输入一个 ...

  9. 状态驱动的游戏智能体设计(下)

    本文由恋花蝶最初发表于http://blog.csdn.net/lanphaday,欢迎转载,但必须保持全文完整,也必须包含本声明. 译者并示取得中文版的翻译授权,翻译本文只是出于研究和学习目的.任何 ...

最新文章

  1. 四层负载均衡——LVS
  2. 【转贴】C#中事件处理的个人体会
  3. [转+个人整理]从D触发器的逻辑结构说明建立时间和保持时间
  4. ADO.Net之SqlConnection、 Sqlcommand的应用(读书笔记1)
  5. kitti百度网盘分享 kitti百度云盘,全套kitti分享 自动驾驶
  6. ASP.NET MVC5总结(二)@HTML扩展
  7. 使用现代 C++ 技术增强多核优化
  8. Spring Cloud学习笔记-005
  9. js 和 jquery 动态创建元素
  10. 自适应迁移学习核极限学习机KELM用于分类
  11. 【Unity Shaders】ShadowGun系列之一——飞机坠毁的浓烟效果
  12. 罗永浩:做直播带货很赚钱,一晚上利润轻松几百万 比卖锤子手机过瘾
  13. 实战 Mantle 解析界面app 科技频道
  14. 宝塔面板安装云锁启用拦截功能全流程操作
  15. 微信小程序生命周期笔记
  16. iTween插件使用整理
  17. 游戏物理中的碰撞测试(一) - 如何检测碰撞
  18. 创建一个urdf机器人_ROS机械臂开发:创建机器人URDF模型
  19. mtk RF配置步骤三
  20. C语言笔记 | 一元三次方程

热门文章

  1. java开发_数字转换汉语中人民币的大写_完整版
  2. 20161102学习笔记
  3. ED/EP系列5《消费指令》
  4. 企业过快移向MBaaS很危险
  5. [转载] 七龙珠第一部——第091话 克林反败为胜
  6. 用Table变量返回多行数据
  7. MongoDB 增删改查
  8. 那传说中的P、NP以及NPC问题
  9. 【LOJ】#3098. 「SNOI2019」纸牌
  10. UiPath Level 1-Lesson 2. Variables Data Types Introduction