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

2020-05-08 00:11:57 +08:00
 miaomico

看到迭代器原理的时候。

引自: 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 叫啥模式啊?

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

962 次点击
所在节点    问与答
2 条回复
yidinghe
2020-05-08 01:21:56 +08:00
描述下“结合起来”是什么意思。
miaomico
2020-05-08 08:50:16 +08:00
@yidinghe 就是输入迭代器可以有前向,双向,随机的访问方式,但只能有一种?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/669470

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX