在类中调用自己类的方法

来源:互联网 发布:数据库的储存过程 编辑:程序博客网 时间:2024/05/20 01:11

最近注意到一个以前没有注意的现象,如题一个类调用自己类中的方法。

第一次发现这个特点是在模板方法模式中找到的。

先看模板模式大概的代码

abstract class AbstractClass{     public abstract void PrimitiveOperation1();     public abstract void PrimitiveOperation2();     public void TemplateMethod(){        PrimitiveOperation1();        PrimitiveOperation2();        Console.WriteLine("");     }}

大话设计模式上是这么说的:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

怎么理解这句话呢?我自己的理解是这样的。因为将想要调用什么方法都写死在TemplateMethod()中,子类想要继承就老老实实将TemplateMethod()也继承下来。这就是定义了一个算法的骨架。但是在抽象类中所有的方法都是抽象的,必须在子类中实现,这就是将实现延迟到子类中。模板方法模式把不变的东西搬到超类中,去除子类中重复的东西。比较适合变化较少,代码比较复杂的环境中。

但是这种语法现象在观察者模式中也出现了。

真题中大量使用了这种现象。相比题中给出的图多了很多方法,而且在实例化使用时只使用了其中的一个。说明在类中自己调用了自己的方法。相比书上给出的东西进行了很多改造,使难度提升了。

总结

1学习时应该注意大局和细节的结合。大局帮我们知道它有什么特色,以及作用。细节帮助我们了解具体的运行方式和实现方式。细节的掌握有助于我们加深对于大局的掌握

2与以往相比,考题进行了很多改造,变难了。需要更多的努力。


0 0