外观模式

用户离职场景

1、交接任务(TaskCenter)

2、归还电脑(AssetCenter)

3、回收权限(PermissionCenter)

4、回收账号(AccountCenter)

5、清算工资(FinanceCenter)

 

我们把离职任务写成类和方法的调用。

taskCenter.transitionTask();

assetCenter.recycleAsset();

permissionCenter.recyclePermission();

accountCenter.recycleAccount();

financeCenter.payCalculation();

用户离职变得如此复杂,让我们用外观模式解决用户离职的复杂性。

 

外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

如果你需要使用复杂子系统的强大威力,还是可以用原来的复杂接口。

但如果你需要一个方便使用的接口,那就使用外观。

 

1、为人员系统创建一个外观,人员系统外观(PeopleSystemFacade)。

2、这个外观类将人员系统的诸多组件视为一个子系统,通过调用这个子系统,来实现leaveOffice()方法。

3、现在人员离职只要调用人员系统外观的一个方法leaveOffice就可以了,所有步骤一口气搞定。

4、外观只是提供更直接的操作,并未将原来的子系统阻隔起来。如果你需要子系统类的更高层功能,还是可以用原来的子系统。

 

外观不止是简化了接口,也将客户从组件的子系统中解耦出来。

 

package com.ez.impl;
/**
 * 调用人员系统外观类的离职方法,用户就可以完成复杂的离职程序。
 * @author 窗外赏雪(EZ编程网)
 */
public class Test {
	public static void main(String[] args) {
		TaskCenter taskCenter = new TaskCenter();
		AssetCenter assetCenter = new AssetCenter();
		PermissionCenter permissionCenter = new PermissionCenter();
		AccountCenter accountCenter = new AccountCenter();
		FinanceCenter financeCenter = new FinanceCenter();
		// 员工离职
		PeopleSystemFacade peopleSystem = new PeopleSystemFacade(taskCenter,
				assetCenter, permissionCenter, accountCenter, financeCenter);
		peopleSystem.leaveOffice();
		System.out.println("离职成功!");
	}
}

 

package com.ez.impl;

/**
 * 人员系统的外观
 * 不止是简化了接口,也将客户从组件的子系统中解耦出来。
 * @author 窗外赏雪(EZ编程网)
 */
public class PeopleSystemFacade {
	private TaskCenter taskCenter;
	private AssetCenter assetCenter;
	private PermissionCenter permissionCenter;
	private AccountCenter accountCenter;
	private FinanceCenter financeCenter;

	public PeopleSystemFacade(TaskCenter taskCenter, AssetCenter assetCenter,
			PermissionCenter permissionCenter, AccountCenter accountCenter,
			FinanceCenter financeCenter) {
		this.taskCenter=taskCenter;
		this.assetCenter=assetCenter;
		this.permissionCenter=permissionCenter;
		this.accountCenter=accountCenter;
		this.financeCenter=financeCenter;
	}
	
	public void leaveOffice(){
		this.taskCenter.transitionTask();
		this.assetCenter.recycleAsset();
		this.permissionCenter.recyclePermission();
		this.accountCenter.recycleAccount();
		this.financeCenter.payCalculation();
	}
}

 

package com.ez.impl;
/**
 * 任务中心
 * @author 窗外赏雪(EZ编程网)
 */
public class TaskCenter {
	public void transitionTask(){
		System.out.println("任务交接完成");
	}
}

 

package com.ez.impl;
/**
 * 权限中心
 * @author 窗外赏雪(EZ编程网)
 *
 */
public class PermissionCenter {
	public void recyclePermission(){
		System.out.println("权限回收完成");
	}
}

 

package com.ez.impl;
/**
 * 财务中心
 * @author 窗外赏雪(EZ编程网)
 */
public class FinanceCenter {
	public void payCalculation(){
		System.out.println("工资结算完成");
	}
}

 

package com.ez.impl;
/**
 * 资产中心
 * @author 窗外赏雪(EZ编程网)
 */
public class AssetCenter {
	public void recycleAsset(){
		System.out.println("资产归还完成");
	}
}

 

package com.ez.impl;
/**
 * 帐号中心
 * @author 窗外赏雪(EZ编程网)
 */
public class AccountCenter {
	public void recycleAccount(){
		System.out.println("帐号回收完成");
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值