設計模式11--中介者模式(Mediator)

中介者模式的本質:封裝交互

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

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);
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章