健身&运动 头条

The understanding of superman an

2016-07-19  本文已影响24人  mamba架构算法

在这暧昧的时代,在这牛逼哄哄的社会,怪物横行的世界,我们需要有超人来解决问题。

于是我们可以new一个超人对象出来,其实就像new一个女朋友出来。

首先,我们需要定义一个超人类,天降彩虹,超人诞生,伴随着超人的是一个超能力的诞生。于是,我们可以将超人的超能力也定义为一个类。

class superman{} //超人类

class power{} //超能力类

一个超人有许多可以具有许多超能力,但是我们举例说明的话,只列举一个超能力类,于是超能力类变成了下面的样子:

超人的超能力类

我们定义了两个受保护的属性,并且在构造方法中初始化这两个属性,代表超人的超能力。

接下来,我们定义超人类

超人类

超人类:我们定义一个power作为超人的超能力,在构造方法中,我们new一个超人的超能力类,实例化出来超人的超能力。

在面向对象中,这种实例化一个对象的同时,也实例化了另外一个对象,我们称之为“依赖关系”,也就是超人类依赖了超能力类。

所谓依赖就是:我依赖了你,我就离不开你(是不是很逗比)

接下来,我们思考:每个超人的超能力都是不一样的,一个超人也可以有多个超能力,比如

(1):飞行  属性有 飞行速度 飞行时间

(2):力气  属性有 力气值

(3):射击  属性有 伤害值 射击距离  射击个数

等等.......

飞行超能力类 射击超能力类

那么我们在实例化超人类的时候就优点麻烦了:

超人类实例化多个超能力类

1:这样的结果是 我们在实例化超人的同时实例化了很多其他的类,这样并不好:

2:如果我们需要更多有针对性的超人,或者改变超人的超能力方法,我们必须重新改造超人类。

  解决方法

// 我们不应该在类的内部固化超人类的超能力初始化行为,而应该在由外部控制

// 在超人类中植入一个接口,一个模具提供一个接口,这个接口相当于一个芯片,

// 能够提升,提高超人的某一种能力

//这样依赖关系就转向了外部,这种由外部负责依赖需求的行为,我们称之为依赖反转(loC)

超人类的模组类

这样我们在实例化超人类的时候就变成了这样:

超人类实例化模组类(工厂类)

//可以看得出 我们在实例化超人类的时候,不需要实例化那么多第三方类

//只需要实例化一个工厂类,由工厂类来实例化第三方类

超人的超能力只需要由工厂来提供即可。简单工厂已经解决了很多问题,但是这其实只是一个开始而已。

(未完待续)

上一篇 下一篇

猜你喜欢

热点阅读