中介者模式的本质:封装交互
模式定义:用一个中介对象来封装已系列的对象交互。中介者使得各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。
package com.impl;
public class DepUserModel {
private String depUserId;
private String depId;
private String userId;
public String getDepUserId() {
return depUserId;
}
public void setDepUserId(String depUserId) {
this.depUserId = depUserId;
}
public String getDepId() {
return depId;
}
public void setDepId(String depId) {
this.depId = depId;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}
package com.impl;
import java.util.ArrayList;
import java.util.List;
public class DepUserMediatorImpl {
/*
* 单例实现
*/
private static DepUserMediatorImpl mediator = new DepUserMediatorImpl();
private DepUserMediatorImpl(){
initDate();
}
public static DepUserMediatorImpl getInstance(){
return mediator;
}
/*
* 测试使用,记录部门和人员的关系
*/
private List<DepUserModel> depUserList = new ArrayList<DepUserModel>();
/*
* 初始话测试数据
*/
private void initDate(){
DepUserModel depUserModel1 = new DepUserModel();
depUserModel1.setDepUserId("001");
depUserModel1.setDepId("dep1");
depUserModel1.setUserId("SHIXIN747");
depUserList.add(depUserModel1);
DepUserModel depUserModel2 = new DepUserModel();
depUserModel2.setDepUserId("002");
depUserModel2.setDepId("dep1");
depUserModel2.setUserId("AXUE630");
depUserList.add(depUserModel2);
DepUserModel depUserModel3 = new DepUserModel();
depUserModel3.setDepUserId("003");
depUserModel3.setDepId("dep1");
depUserModel3.setUserId("HONGMENGQING854");
depUserList.add(depUserModel3);
DepUserModel depUserModel4 = new DepUserModel();
depUserModel4.setDepUserId("004");
depUserModel4.setDepId("dep2");
depUserModel4.setUserId("LIAOYU123");
depUserList.add(depUserModel4);
DepUserModel depUserModel5 = new DepUserModel();
depUserModel5.setDepUserId("005");
depUserModel5.setDepId("dep2");
depUserModel5.setUserId("XIUXIU785");
depUserList.add(depUserModel5);
}
public void showDepUsers(){
for(DepUserModel depUser : depUserList){
System.out.println(depUser.getDepUserId() + "," + depUser.getDepId() + "," + depUser.getUserId());
}
}
public boolean deleteDep(String depId){
//请注意:为了延时简单,部门撤销后,原部门的人员怎么处理等后续处理,这里就不管了
List deleteList = new ArrayList();
for(DepUserModel depUser : depUserList){
if(depUser.getDepId().equals(depId)){
deleteList.add(depUser);
}
}
depUserList.removeAll(deleteList);
return true;
}
public boolean deleteUser(String userId){
List deleteList = new ArrayList();
for(DepUserModel depUser : depUserList){
if(depUser.getUserId().equals(userId)){
deleteList.add(depUser);
}
}
depUserList.removeAll(deleteList);
return true;
}
}
package com.impl;
public class Dep {
private String depId;
private String depName;
public String getDepId() {
return depId;
}
public void setDepId(String depId) {
this.depId = depId;
}
public String getDepName() {
return depName;
}
public void setDepName(String depName) {
this.depName = depName;
}
/*
* 撤销部门
* @return 是否撤销成功
*/
public boolean deleteDep(){
DepUserMediatorImpl mediator = DepUserMediatorImpl.getInstance();
return mediator.deleteDep(depId);
}
}
package com.impl;
public class User {
private String userId;
private String userName;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
/*
* 人员离职
* @return 是否人员离职成功
*/
public boolean dimission(){
DepUserMediatorImpl mediator = DepUserMediatorImpl.getInstance();
return mediator.deleteUser(userId);
}
}