首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏历史专栏

    【愚公系列】2021年12月 二十三种设计模式(十七)-中介者模式(Mediator Pattern)

    public class Program { private static ChatRoom _chatRoom; public static void Main(string[] (juice); _chatRoom.Attach(cola); _chatRoom.Attach(iori); _chatRoom.Attach(marin ); _chatRoom.Talk2All(juice, "Hello Every one!") ; _chatRoom.Talk2User(cola, iori, "Hello Iori!") ; _chatRoom.Talk2User(iori, marin, "Hello Marin!")

    36130编辑于 2022-12-01
  • 来自专栏Golang语言社区

    Golang语言情怀-第28期 Go 语言设计模式 中介者

    //ChatRoom 聊天室类,当做中介者 type ChatRoom struct{} var chatRoom = NewChatRoom() //NewChatRoom 实例化中介者 func NewChatRoom() *ChatRoom { return &ChatRoom{} } //ShowMessage 中介者发送消息 func (cr *ChatRoom) ShowMessage Name: name, } } //SendMessage 用户类使用中介者发送消息 func (u *User) SendMessage(msg string) { chatRoom.ShowMessage

    52610发布于 2021-02-05
  • 来自专栏C/C++进阶专栏

    C++设计模式——Mediator中介者模式

    = new ChatRoom(); User* user1 = new ChatUser("User1", chatRoom); User* user2 = new ChatUser( "User2", chatRoom); User* user3 = new ChatUser("User3", chatRoom); chatRoom->addUser(user1); chatRoom->addUser(user2); chatRoom->addUser(user3); user1->sendMessage("Hello, everyone! ; delete user1; delete user2; delete user3; delete chatRoom; return 0; } 运行结果: Demo2:模拟的聊天室 #include <iostream> #include <string> #include <vector> using namespace std; struct ChatRoom

    42010编辑于 2024-07-25
  • 来自专栏人生代码

    python获取微信好友信息以及分析朋友圈,绘制自己朋友圈画像

    = itchat.update_chatroom(c['UserName']) specifed_chatroom_memberList = list(specifed_chatroom ['MemberList']) chatroom_name = specifed_chatroom['NickName'] chatroom_friends[chatroom_name chatroom_friends 设计一个函数,获取相同的群数, 如下: def getSameChatroomInfo(chatroom_friends, friend_overlap): (chatroom_friends) for k in result_chatroom_friends: usernames = result_chatroom_friends[k]['friends .tolist()) result_chatroom_friends = pd.DataFrame(result_chatroom_friends).T result_chatroom_friends

    1.6K10发布于 2019-07-24
  • 来自专栏TechFlow

    原创 | 不写垃圾代码,从学会这个设计模式开始

    所以我们可以把ChatRoom设计成单例模式,不管User创建多少实例,获得的ChatRoom都是同一个,这样就节省了内存开销。 我们用单例模式来改写一下ChatRoom的代码: import threading class ChatRoom: _lock = threading.Lock() def , '_instance'): with ChatRoom. _lock: if not hasattr(ChatRoom, '_instance'): ChatRoom. __new__(cls) return ChatRoom._instance 到这里,这个问题才算是被优化到了极限。

    51310发布于 2020-12-08
  • 来自专栏Python小屋

    Python+django网页设计入门(20):使用WebSocket创建多人在线聊天室

    4、新建应用apps\ws\chatroom及其相应的文件,文件夹结构如下 ? 5、修改网站项目的settings.py,增加channels和chatroom应用。 ? 9、创建模板文件apps\ws\chatroom\templates\chatroom\index.html,内容如图所示 ? 10、创建模板文件apps\ws\chatroom\templates\chatroom\room.html,内容如下 ? 13、修改apps\ws\chatroom\urls.py文件内容如下 ? 14、修改apps\ws\chatroom\views.py文件,内容如下 ? 15、修改apps\ws\chatroom\routing.py文件,内容如下 ? 16、修改apps\ws\chatroom\consumers.py文件,内容如下 ?

    2.9K31发布于 2019-05-05
  • 来自专栏python3

    基于flask的网页聊天室(二)

    init文件为: from flask import Flask from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() from web_chatroom.models import * from web_chatroom.auth import auth from web_chatroom.chat import chat def create_app(): db.init_app(app) return app 这是为了引入SQLAlchemy()对象db,并读取相关的配置,首先要注意的是db = SQLAlchemy()必须要在from web_chatroom.auth import models from web_chatroom import db import hashlib from utils import forms auth = Blueprint( (): if request.method == 'GET': return render_template('chatroom.html') 当然页面里目前什么也没有。。。

    1.4K20发布于 2020-01-16
  • 来自专栏夏天的前端笔记

    微信小程序-聊天室

    1.实现效果展示 2.room.wxml <view class="container" style="{{containerStyle}}"> <chatroom style="width userInfo="{{userInfo}}" onGetUserInfo="{{onGetUserInfo}}" getOpenID="{{getOpenID}}" ></chatroom takeSession: false, requestResult: '', // chatRoomEnvId: 'release-f8415a', chatRoomCollection: 'chatroom ', chatRoomGroupId: 'demo', chatRoomGroupName: '聊天室', // functions for used in chatroom ": "/components/chatroom/chatroom" } } 5.room.wxss .container { height: 100%; position: absolute

    72210编辑于 2024-01-18
  • 来自专栏乐百川的学习频道

    设计模式(十八) 中介者模式

    public class ChatRoom { private List<Message> messages = new ArrayList<>(); public void sendMessage public String getName() { return name; } public void sendMessage(Message message, ChatRoom chatRoom) { chatRoom.sendMessage(message); } } 最后是消息类。 public void run() { ChatRoom chatRoom = new ChatRoom(); User yitian = new User("yitian ); leo.sendMessage(new Message(leo, yitian, "I'm fine, thank you"), chatRoom); } 结果应该类似这样

    74460发布于 2018-01-08
  • 来自专栏python3

    Python Web聊天室--首页

    有些包目前还没有用到,但是以后会用 from django.shortcuts import render_to_response, HttpResponse from chat.models import ChatRoom chat'时交给views.index函数处理    url(r'^$', views.index), ) 3.编辑models文件 # chat/models.py # 这个表用来保存房间名 class ChatRoom manage.py syncdb 在admin中注册 # chat/admin.py from django.contrib import admin from chat.models import ChatRoom , RoomAccount, ChatPool # Register your models here. admin.site.register(ChatRoom) 启动应用,然后访问http://IP 到这里我们的首页就搞定了,聊天室的页面我们下次再更新 源码地址: https://github.com/cheney93/ChatRoom

    1.9K10发布于 2020-01-07
  • 来自专栏飞鸟的专栏

    Redis实现消息队列和实时通信

    : def __init__(self, name): self.name = name self.channel = 'chatroom:' + name = ChatRoom('general')# 用户加入聊天室chatroom.join('User1')chatroom.join('User2')# 发送消息到聊天室chatroom.send_message chatroom.send_message('User2', 'Hi, User1!') # 用户离开聊天室chatroom.leave('User1')# 接收聊天室的消息thread = threading.Thread(target=chatroom.receive_messages) thread.start()# 防止主线程退出thread.join()在上述示例中,我们定义了一个ChatRoom类,其中包含了加入聊天室、离开聊天室、发送消息和接收消息的方法。

    1.3K40编辑于 2023-05-17
  • 来自专栏Tom弹架构

    微信和QQ这么多群,该如何管理好友关系?

    public class User { private String name; private ChatRoom chatRoom; public User(String name , ChatRoom chatRoom) { this.name = name; this.chatRoom = chatRoom; } public () { return name; } } 然后创建ChatRoom类。 public class ChatRoom { public void showMsg(User user, String msg) { System.out.println(" public static void main(String[] args) { ChatRoom room = new ChatRoom(); User tom =

    86820编辑于 2021-12-21
  • 来自专栏芋道源码1024

    连夜撸了一个简易聊天室

    Long Polling) 全双工通信:Websocket 单向服务器推送:Server-Sent Events(SSE) 文中会以一个简易聊天室的例子来分别通过上述的四种方式实现,代码地址mini-chatroom (); while (key === contentKey) { sleep.sleep(5); contentKey = chatRoom.getContentKey(); } const connectors = chatRoom.getConnectors(); const messages = chatRoom.getMessages(); res.json == contentKey) { var connectors = chatRoom.getConnectors(); var messages = chatRoom.getMessages = chatRoom.getDatas(); io.emit('data', { data }); }); }); 响应格式如下: ?

    87030发布于 2020-12-08
  • 来自专栏Tom弹架构

    微信和QQ这么多群,该如何管理好友关系?

    public class User { private String name; private ChatRoom chatRoom; public User(String name , ChatRoom chatRoom) { this.name = name; this.chatRoom = chatRoom; } public () { return name; } } 然后创建ChatRoom类。 public class ChatRoom { public void showMsg(User user, String msg) { System.out.println(" public static void main(String[] args) { ChatRoom room = new ChatRoom(); User tom =

    81650发布于 2021-11-24
  • 来自专栏一些有趣的Python案例

    在王者荣耀角度下分析面向对象程序设计B中23种设计模式之中介者模式

    */ public class Application { public static void main(String[] args) { // TODO 自动生成的方法存根 ChatRoom room=new ChatRoom(); PlayerOne playerOne=new PlayerOne(room); PlayerTwo playerTwo=new PlayerTwo ; /* 角色3.1:具体同事 */ public class PlayerOne implements Players{ ChatRoom room; //中介者 String name; PlayerOne(ChatRoom room){ this.room=room; room.registerPlayerOne //中介者 String name; PlayerTwo(ChatRoom room){ this.room=room; room.registerPlayerTwo

    48900发布于 2021-01-30
  • 来自专栏即时通讯技术

    网页端IM通信技术快速入门:短轮询、长轮询、SSE、WebSocket

    ();   while(key === contentKey) {     sleep.sleep(5);     contentKey = chatRoom.getContentKey();    }   const connectors = chatRoom.getConnectors();   const messages = chatRoom.getMessages();   res.json == contentKey) {     var connectors = chatRoom.getConnectors();     var messages = chatRoom.getMessages ();     const messages = chatRoom.getMessages();     const response = { code: 200, data: { connectors chatRoom.getDatas();     io.emit('data', { data });   }); }); PS:完整代码,请见本文“4、本文配套Demo和代码”一节。

    2.1K31发布于 2021-05-25
  • 来自专栏全栈程序员必看

    Spark部分流程说明

    org.jivesoftware.spark.ChatManager activateChat() =>org.jivesoftware.spark.ui.ChatContainer addChatRoom(final ChatRoom room) org.jivesoftware.spark.ui.ChatContainer fireChatRoomOpened(ChatRoom room) org.jivesoftware.spark.ui.conferences.ConferenceServices addChatRoomListener() chatRoomOpened(final ChatRoom room) 举例说明: ChatManager chatManager = SparkManager.getChatManager

    57920编辑于 2022-07-05
  • 来自专栏python3

    python-itchat 统计微信群、

    群聊用户列表的获取方法为update_chatroom。 群聊在首次获取中不会获取群聊的用户列表,所以需要调用该命令才能获取群聊的成员 该方法需要传入群聊的UserName,返回特定群聊的用户列表 memberList =itchat.update_chatroom 人的群聊无法使用直接加入的加入方式,特别注意 memberList =itchat.get_friends()[1:] # 创建群聊,topic键值为群聊名 chatroomUserName =itchat.create_chatroom (memberList, 'test chatroom') # 删除群聊内的用户 itchat.delete_member_from_chatroom(chatroomUserName, memberList [0]) # 增加用户进入群聊 itchat.add_member_into_chatroom(chatroomUserName, memberList[0], useInvitation=False)

    4.7K20发布于 2020-01-16
  • 来自专栏老码农专栏

    原 荐 用 ActFramework 写一个

    运行下面的命令创建一个新的 ActFramework 应用项目: mvn archetype:generate -B \ -DgroupId=com.myproj \ -DartifactId=chatroom maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.myproj</groupId> <artifactId>chatroom </head> <body>

    WebSocket @i18n("demo") - @i18n("chatroom , 全部项目的源代码统计如下: luog@luog-X510UQR:~/p/greenlaw110/chatroom$ cloc src 7 text files. 7 unique 整个项目源码只能在 gitee 上获取: https://gitee.com/greenlaw110/act-chatroom/ 7.

    1.2K90发布于 2018-06-20
  • 来自专栏一些有趣的Python案例

    在王者荣耀角度下分析面向对象程序设计B中23种设计模式之中介者模式

    */ public class Application { public static void main(String[] args) { // TODO 自动生成的方法存根 ChatRoom room=new ChatRoom(); PlayerOne playerOne=new PlayerOne(room); PlayerTwo playerTwo=new PlayerTwo ; /* 角色3.1:具体同事 */ public class PlayerOne implements Players{ ChatRoom room; //中介者 String name; PlayerOne(ChatRoom room){ this.room=room; room.registerPlayerOne System.out.println(mess); } } PlayerThree.java package angle_mediator; import angle_mediator.ChatRoom

    45430发布于 2021-02-02
领券