Created
October 23, 2012 09:55
-
-
Save itang/3937962 to your computer and use it in GitHub Desktop.
Circle Model
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package demo; | |
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.List; | |
/** | |
* 圈子成员接口. | |
* | |
*/ | |
interface CircleMember { | |
Long getId(); | |
String getName(); | |
// 获取成员对应的用户 | |
List<User> getCircleUsers(Long circleId); | |
} | |
/** | |
* 圈子. | |
* | |
*/ | |
public class Circle { | |
// @ManyToMany | |
private List<User> users = new ArrayList<User>(); | |
// @ManyToMany | |
private List<Group> groups = new ArrayList<Group>(); | |
// 获取圈子成员列表. | |
public List<CircleMember> getMembers() { | |
List<CircleMember> members = new ArrayList<CircleMember>(); | |
members.addAll(users); | |
members.addAll(groups); | |
return members; | |
} | |
} | |
interface CircleService { | |
public Circle getCircleById(Long id); | |
// 发送圈子消息 | |
public void sendMessage(Long circleId, Message message); | |
} | |
class CircleServiceImpl implements CircleService { | |
public Circle getCircleById(Long id) { | |
return null; | |
} | |
public void sendMessage(Long circleId, Message message) { | |
Circle circle = getCircleById(circleId); | |
// 检测circle != null | |
for (CircleMember member : circle.getMembers()) { | |
if (member instanceof User) { | |
// 如果成员是用户 | |
} else if (member instanceof Group) { | |
// 如果成员是组织机构 | |
} | |
List<User> users = member.getCircleUsers(circleId); | |
for (User user : users) { | |
doSendMessage(user, message); | |
} | |
} | |
} | |
private void doSendMessage(User user, Message message) { | |
// TODO | |
} | |
} | |
/** | |
* 用户. | |
* | |
*/ | |
// @Entity | |
class User implements CircleMember { | |
// 用户加入的圈子 | |
// @ManyToMany | |
private List<Circle> circles = new ArrayList<Circle>(); | |
public Long getId() { | |
return null; | |
} | |
public String getName() { | |
return null; | |
} | |
public List<User> getCircleUsers(Long circleId) { | |
return Arrays.asList(this); | |
} | |
public List<Circle> getCircles() { | |
return circles; | |
} | |
} | |
/** | |
* 分组. | |
* | |
* (包括机构、企业) | |
* | |
*/ | |
// @Entity | |
class Group implements CircleMember { | |
public Long getId() { | |
return null; | |
} | |
public String getName() { | |
return null; | |
} | |
public List<User> getCircleUsers(Long circleId) { | |
// TODO 通过角色匹配等方式获取此"分组" 对应的用户 | |
return null; | |
} | |
} | |
/** | |
* 消息. | |
* | |
*/ | |
// @Entity | |
class Message { | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment