装饰模式(Decorator),迭代器模式(Iterator),组合模式(composite)

    xiaoxiao2024-12-26  10

    装饰模式,动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。属于行为型模式。 迭代器模式:

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

    main(),客户

    IProject,产品接口

    CProject,产品类

    IIterator,迭代器接口

    IProjectIterator,产品迭代器接口

    CProjectIterator,产品迭代器实现类

    说明:CProject实现产品类,能够返回一个迭代器的指针。这个迭代器将封装产品类里的一个数组。所以迭代器在运行Next函数时,可以遍历这个数组的所有元素。

    简单来说,就是用代码实现vector<int>::iterator或vector<int>::const_iterator。

    组合模式:

    概念:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合的使用具有一致性。

    main(),客户

    CCorpNode,抽象基类,实现基本信息

    CBranchNode,树枝节点,实现Addordinate()函数和GetSubordinate()函数

    CLeafNode,叶子节点,IsLeaf属性总是“true”

    说明:组合模式主要是实现在CBranchNode对象里增加对其它对象的数组,如vector<CCorpNode*>,数组里可以存放CBranchNode和CLeafNode对象。这样方便进行遍历操作。

    注意:组合模式有透明组合模式和安全组合模式。透明组合模式是将Addordinate和GetSubordinate这两个函数也抽象到CCorpNode基类里,这增加了操作叶子节点的难度,更易出现逻辑问题。所以尽量使用安全模式。

    转载请注明原文地址: https://ju.6miu.com/read-1295002.html
    最新回复(0)