Skip to content

Instantly share code, notes, and snippets.

@drypot
Last active September 20, 2019 09:29
Show Gist options
  • Save drypot/14ced2aa65d4668b4fe7dd1889e2b04d to your computer and use it in GitHub Desktop.
Save drypot/14ced2aa65d4668b4fe7dd1889e2b04d to your computer and use it in GitHub Desktop.
User, Room Sketch
// User
class User {
userId;
}
class UserManager {
IRepository repo;
List<User> users = new List<User>();
User GetUser(int userId);
void UpdateUser(int userId, int p1, int p2, int p3, int p4, int p5, int p6)
{
var user = users.Find(userId);
user.Update(p1, p2, p3, p4, p5, p6);
repo.UpdateUser(userId, p1, p2 p3, p4, p5, p6);
}
}
class MySQLRepo : IRepository {
void UpdateUser(int userId, int p1, int p2, int p3, int p4, int p5, int p6)
{
// EF 코드
}
}
void CalcComplexDataAndUpdate(int userId)
{
// Calculation....
int p1 = ...
int p2 = ...
int p3 = ...
...
userManager.UpdateUser(userId, p1, p2, p3, p4, p5, p6);
}
// Room
class Room {
roomId;
users;
}
class RoomManager {
IRoomRepository repo;
void RoomNotify(int roomId, string msg)
{
var room = repo.GetRoom(roomId);
foreach(var user in room.Users)
userSessionManager.SendMessage(user.Id, msg);
}
}
class RedisRoomRepository : IRoomRepository {
Room GetRoom(int roomId);
}
class MemoryRoomRespository : IRoomRepository {
List<Room> rooms = new List<Room>();
Room GetRoom(int roomId);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment