您现在的位置:主页 > 本港台18码开奖 >

069888.com香港马会开奖直播委托的定义及使用

文章来源:本站原创 发布时间:2019-11-05 点击数:

  这是一个简单的委托,那么为什么要这样使用委托呢?这里我引入一个简单的例子,请看下面的代码:

  这里新建一个People 类 实现一个简单的问候方法。随着程序的运行,我们的需求可能会发生变化(唉,需求变化乃万恶之源)。

  这里我们扩展一下。我们的问候对象 要区分中国人,069888.com香港马会开奖直播。美国人,日本人,方法就要改对应国家的语言。一般我们对原有的方法作出以下修改。

  这样做虽然实现了功能,但是这样做不推荐,因为每增加一个分支(比如又新加了法国人,韩国人等等),都需要去修改SayHI()方法和新增一个PeopleType。这样系统耦合性太大,SayHI方法包法了所有的问候逻辑。于是我们继续升级,代码如下:

  这样我们把原来分支里面的拆分成上面的多个方法。这样就可以适应人物类型的扩展了,看似没有什么问题。这时我们的问题来了,我们的业务要进行扩展。我们需要在每次问候之前,结束都需要加入日志记录。代码如下:

  这样做显然太麻烦,每个方法都要去添加公共逻辑(增加日志)。所以要有一个公有方法添加日志。那我们又回到最初的方法。

  以上方法可以增加公有逻辑,但是是存在分支。把方法分开写,不存在分支,但是每个方法里面要增加公有逻辑,那我们有什么办法把这两种合并在一起呢。有的,引入委托解决这一问题。代码如下:

  2.除本文中讲到的解藕,委托还用于事件,观察者模式,lamada表达式,异步多线程等等,可以说委托在我们的编程中无处不在。