设计模式之观察者模式——猫抓老鼠2:

对猫抓老鼠1再次进行优化,降低代码复杂性,以及使用事件来对方法进行保护


代码优化:

将老鼠代码进行优化,将自己的方法在构造时便注册到猫里面:

using System;
using System.Collections.Generic;
using System.Text;/// <summary>
/// 观察者设计模式——猫抓老鼠
/// </summary>
namespace Unity_Observe_mode
{/// <summary>/// 老鼠类-观察者类/// </summary>class Mouse{private string name;private string color;public Mouse(string name,string color,Cat cat){this.name = name;this.color = color;cat.catCome += this.RunAway;}public void RunAway(){Console.WriteLine(color + "的老鼠" + name + "说:老猫来了,赶紧跑! ");}}
}

猫类代码添加事件:

这里添加事件后,用法与委托一样,主要目的是:防止被外界进行调用,只能在内部触发

using System;
using System.Collections.Generic;
using System.Text;/// <summary>
/// 观察者设计模式——猫抓老鼠
/// </summary>namespace Unity_Observe_mode
{/// <summary>/// 猫类/// </summary>class Cat{private string name;private string color;public Cat(string name,string color){this.name = name;this.color = color;}/// <summary>/// 猫的状态发生改变(被观察者状态发生改变)/// </summary>public void CatComing(){Console.WriteLine(color + "的猫" + name + "过来了,喵喵喵!!");if(catCome!=null)catCome();}public event Action catCome;//定义一个委托//public void CatComing(Mouse mouse1,Mouse mouse2,Mouse mouse3)//{//    Console.WriteLine(color + "的猫" + name + "过来了,喵喵喵!!");//    mouse1.RunAway();//    mouse2.RunAway();//    mouse3.RunAway();//}}
}

最后进行测试,得到结果:

至此设计模式——观察者模式完成。

设计模式之观察者模式——猫抓老鼠2相关推荐

  1. 设计模式之观察者模式——猫抓老鼠1

    设计模式之观察者模式--猫抓老鼠: 问题描述: 通过猫抓老鼠的例子进行了解观察者模式,首先的初始代码为(有三个类): using System;/// <summary> /// 观察者设 ...

  2. 猫抓老鼠-Java面向对象特点梳理

    我们先设计一个猫抓老鼠的小游戏: ⊙猫和老鼠都有名字和体重两种属性,猫有抓老鼠的方法,对应的老鼠则有逃跑的方法. ⊙首先游戏的结果是猫抓住了老鼠或者老鼠逃跑了,对于这两种情况,我们用体重来区分,若猫的 ...

  3. java猫抓老鼠_猫抓老鼠-Java面向对象特点梳理

    我们先设计一个猫抓老鼠的小游戏: ⊙猫和老鼠都有名字和体重两种属性,猫有抓老鼠的方法,对应的老鼠则有逃跑的方法. ⊙首先游戏的结果是猫抓住了老鼠或者老鼠逃跑了,对于这两种情况,我们用体重来区分,若猫的 ...

  4. 猫抓老鼠c语言程序,猫抓老鼠问题C++实现一例(约瑟夫环问题)

    今天偶然在网上看到了猫抓老鼠问题, 当时也没多想,只觉得网上给出的程序的确有很多需要改进的地方, 就闷头闷脑的用 循环链表 和 递归 写了一个算法实现,后来发现 这个问题实际上是经典的约瑟夫环问题的变 ...

  5. java猫抓老鼠_用猫抓老鼠的实例理解java中面向对象的编程与类和对象以及方法的概念...

    今天看到马士兵讲的关于面向对象编程的思路,用了一个猫抓老鼠的例子,我觉得这个例子非常形象,于是写在这里,方便学习理解和以后查看 class cat{ //声明一个类–"猫" int ...

  6. 实验吧WEB CTF 猫抓老鼠 全网最简单易懂的解题方法

    前言 题目网址: 实验吧平台升级维护中 需要用到的工具: burpsuite 官方视频教程: 01 02 开始 首先打开burpsuite,切换到Proxy选项卡,确保intercept是关着的. 打 ...

  7. 面向对象之猫抓老鼠小游戏

    面向对象之猫抓老鼠小游戏: 猫类的创建: 代码: package com.softeem.lesson08.example;public class Cat {private String name; ...

  8. CTF---Web入门第七题 猫抓老鼠

    猫抓老鼠分值:10 来源: 实验吧 难度:难 参与人数:8697人 Get Flag:3740人 答题人数:3944人 解题通过率:95% catch!catch!catch!嘿嘿,不多说了,再说剧透 ...

  9. 实验吧 WEB 猫抓老鼠

    人生的第一道CTF题目哇,鸡冻 其实只是学了一下HTTP抓包得到的都是什么,就开始上手胡搞了 题目名字叫猫抓老鼠,还疯狂暗示catch!catch!catch!catch!,就想到要用抓包其实我是因为 ...

最新文章

  1. 为什么信不过AI看病?数据集小、可靠性差,AI医疗任重道远
  2. HttpURLConnection发送post请求信息
  3. arguments小结
  4. 强联通分量算法的个人详解Tarjan算法(包含缩点)
  5. 【回文数】算法优化笔记
  6. 【weex开发】环境配置流程
  7. Spring-Data-Jpa简介
  8. qt输出中文乱码处理(解决方法)
  9. 小强的HTML5移动开发之路(51)——jquerymobile中改善页面访问速度
  10. python android自动化测试框架_appium+python搭建自动化测试框架_Tools安装(一)
  11. Cocos2d-x学习笔记(十一)动作
  12. 2020教师计算机考试笔试题,2020年全国教师资格考试信息技术学科知识与能力练习题...
  13. WeChatDeveloper
  14. 想用 Google 搜索引擎吗,看这篇文章吧!!!
  15. 大数据岗位更看重学历还是工作经验?
  16. 信息系统安全研究的内容包括哪些?
  17. python和C++
  18. 【医学图像处理】CT成像技术之CT剂量
  19. Vue.js 3.0 学习笔记(七)class与style绑定
  20. 2015 股市小牛 记载

热门文章

  1. r语言ggplot2误差棒图快速指南
  2. [学习笔记]Python for Data Analysis, 3E-9.绘图和可视化
  3. 医学图像处理与深度学习入门
  4. 服务器怎么用固态盘安装系统,服务器使用固态盘安装
  5. 计算机科学协会入会申请书,计算机协会会长申请书
  6. python 公众号 关注者位置_微信公众号获取用户地理位置
  7. Problem D. Euler Function HDU - 6322(欧拉数,找规律)
  8. 如何改变computed执行_皓儿日记2019-11-09 《执行力》读书笔记
  9. 如何有效防止PHP木马对网站提权
  10. ubuntun16 上rtl 8723be 安装