V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
miaomico
V2EX  ›  问与答

有个关于设计模式的问题,想请教一下。

  •  
  •   miaomico · 2020-05-08 00:11:57 +08:00 · 1045 次点击
    这是一个创建于 1679 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看到迭代器原理的时候。

    引自: https://blog.csdn.net/qq_42039281/article/details/80871794

    图床链接: https://s1.ax1x.com/2020/05/07/YmIBCT.png

    有提供范围的迭代器, [前向 /双向 /随机]

    有提供功能的迭代器。 [输入 /输出]

    我想把他们结合起来,并且使用 C 语言结构体 管理使用,

    如果使用适配器模式,那就肯定会抹杀掉其中一种他们子类之间不一样的特性。

    适配器模式:

    功能迭代器.适配(范围迭代器);
    
    struct range_iterator{
        void *advance;		// 保留 共有
        void *distance;		// 保留 共有
        
        //void *next;		// 剔除 forward,bidirectional,random 持有
        //void *prev;		// 剔除 bidirectional,random 持有
        //void *at;			// 剔除 random 持有
    };
    
    input_iterator.adapt(forward_iterator);
    output_iterator.adapt(bidirectional_iterator);
    

    xxx 模式,咱也不知道叫啥,就叫 xxx 吧,伪代码:

    范围迭代器.范围方法(范围参数[可选],功能迭代器.功能方法,功能参数);
    
    forward_iterator.next(input_iterator->read, ...);
    
    bidirectional_iterator.prev(input_iterator->read, ...);
    
    random_access_iterator.at(position, output_iterator->write, ...);
    

    那么这个 xxx 叫啥模式啊?

    装饰器模式?还是就是适配器模式?还是其他呀?

    2 条回复    2020-05-08 08:50:16 +08:00
    yidinghe
        1
    yidinghe  
       2020-05-08 01:21:56 +08:00 via Android
    描述下“结合起来”是什么意思。
    miaomico
        2
    miaomico  
    OP
       2020-05-08 08:50:16 +08:00 via Android
    @yidinghe 就是输入迭代器可以有前向,双向,随机的访问方式,但只能有一种?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5389 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:43 · PVG 09:43 · LAX 17:43 · JFK 20:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.