中介者模式的本質:封裝交互
模式定義:用一箇中介對象來封裝已係列的對象交互。中介者使得各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變他們之間的交互。
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);
}
}