一、学前思考

1.什么是构造器?

构造器可以用public、priviate、protected这样的关键词修饰。没有返回值

构造方法是一种特殊的方法,与一般的方法不同是:
1.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。
2.构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。
3.不能被static、final、synchronized、abstract和native修饰。
构造方法不能被子类继承。 构造方法可以被重载。
没有参数的构造方法称为默认构造方法,
与一般的方法一样,构造方法可以进行任何活动,但是经常将他设计为进行各种初始化活动,
比如初始化对象的属性。
在Java中,任何变量在被使用前都必须先设置初值.
Java提供了为类的成员变量赋初值的专门功能:构造方法(constructor)构造方法是一种特殊的成员方法,
它的特殊性反映在如下几个方面:
(1)构造方法名与类名相同.
(2)构造方法不返回任何值,也没有返回类型.
(3)每个类可以有零个或多个构造方法.
(4)构造方法在创建对象时自动执行,一般不能显式地直接调用

2.STL以及泛型编程中的迭代器是什么?

泛型编程是使用基于模板的迭代器

泛型编程有很多种迭代器。有五种迭代器。很少用面向对象的迭代器

通过接口的方式去隔离算法和容器之间的变化

二、数据结构模式之Iterator(构造器模式)

常常有一些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用。这时候,将这些特定的数据结构都封装在内部,在外部提供统一的接口,来实现这些与特定数据结构无关的访问。

1.动机

在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历“也为”同一种算法在多种集合对象上进行操作“提供了可能

使用面向对象技术将这种遍历机制抽象成为”迭代器对象“为”应对变化种的集合对象“提供了一种优雅的方式。

2.模式定义

提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露(稳定)该对象的内部表示。

3.结构

数据结构模式之Iterator(构造器模式)1.“依赖”表示为带箭头的虚线,箭头指向被依赖的元素。是类与类之间的连接,表示为一个类依赖于还有一个类的定义,当中一个类的变化将影响还有一个类。依赖总是单向的,不应该存在双向依赖,这一点要特别注意。更详细的说,依赖能够理解为:一个类(A)对不在事实上例作用域内的还有一个类或对象(B)的不论什么类型的引用。大致包括下面几种情况:

(1)局部变量;

(2)方法的參数;

(3)静态方法的调用;
2.关联表示为带箭头的实线。关联能够是单向的,也能够是双向的。假设是双向关联,则能够表示为双向箭头,或者没有箭头。一般来说,系统设计应表现为单向关联,这样利于维护。一个关联能够附加“多重性”的修饰符,表示两个类之间的数量关系。关联能够理解为:一个类(A)持有还有一个类或对象(B)。详细表现为:

(1)成员变量

4.要点总结
  • 迭代抽象:访问一个聚合对象的内容而无需暴露他的内部表示

  • 迭代多态:为便利不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作

  • 迭代器的健壮性考虑:遍历的同时更该迭代器所在的集合结构,会导致问题。

三、散装知识点

1.这个模式在C++中已经过时了。迭代器的设计是纯面向对象思想的。虚函数调用有调用成本,有二次指针的间接调用。

2.面向对象的核心是多态。模板也是一种多态技术(编译时多态)。虚函数是运行时多态,运行时多态性能比编译时多态低。

3.本文针对C++,在其他语言种这种方法有很大的用处。(比如JAVA,C#)

4.随着技术发展很多设计模式会过时,但是思想不会过时

相关文章:

  • 2022-12-23
  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
  • 2021-04-21
猜你喜欢
  • 2021-05-18
  • 2022-12-23
  • 2021-12-09
  • 2021-08-14
  • 2021-11-03
  • 2021-09-25
相关资源
相似解决方案