在C中使用相似性模式观察器

我最近回想起读过一本关于Java设计模式的书,由于我仍然不了解如何用OOP的内存来完成这一工作,因此我决定用C编写实现。

我决定再次在这本Java书籍中查看如何实现这种模式。 我浏览了整章,看了看代码,但是什么都没想到。 为什么这样 )用oop风格思考是正确的吗? 例如,我了解一点Java和C ++,但是实现该实现有多方便,以使其使用起来令人愉悦并且不会被遗忘? 同样在实验中,我研究了如何在c ++中完成此操作。 好吧,老实说,我很难看这样的代码,我必须阅读每一行并加以思考。

那么我做了什么,可能会在将来的编程中派上用场? 满足github上的实现。 我想解释一下我写的内容的易用性。 在此实现中,您无需创建将存储数据的结构。 底层结构本身在幕后。 例如,我要在一个文件中订阅TRADE发布者。 例如,该发布者将为我提供产品折扣。 我将观察者视为普通函数,并根据规则对其进行声明。

void sub_trade ( void *event, void *data ) { /*        . */ } 

现在,我想创建一个发布者并订阅事件。 在这种情况下,您不需要调用其他任何内容。 仅需要指示将订户转移到哪个发布者。

 enum { TRADE }; init_publisher ( TRADE, sub_trade, NULL ); 

就是这样。 我们订阅了发布者。 例如,现在在另一个文件中,我想在在线聊天中进行新闻通讯。 我不知道在OOP中执行此操作有多方便,在Java中更是如此,但是借助我的实现,此操作很简单。 顺便说一句,java可能必须使用静态方法。

我声明了另一个订阅者功能。

 enum { TRADE }; void notify_chat_trade ( void *event, void *data ) { /*       */ } ... init_publisher ( TRADE, notify_chat_trade, NULL ); 

现在,在接收和解析新数据的文件中,出现了折扣数据。 我只需要调用这样的函数,数据就会在必要时传输。

 /*      10,      . */ send_event ( TRADE, 10 ); 

因此,它既方便又简单,而且没有使用困难,您可以获得理想的结果。 我想我做得很好。

顺便说一句,谁能向我解释,是结构化编程还是程序性的?

Source: https://habr.com/ru/post/zh-CN483520/


All Articles