设计模式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);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值