设为首页 加入收藏

TOP

门面模式(Facade)(一)
2015-07-20 17:14:28 来源: 作者: 【 】 浏览:6
Tags:门面 模式 Facade
门面模式,又称外观模式.其定义是:"外部与一个子系统的通信必须通过一个统一的门面对象进行"
我们可以把它理解为一个只有一个单例的门面类
当然,一个由多个子系统组成的大系统,可以有多个门面类

基于对定义的理解,我们认为门面模式的主要目的是为了清理客户使用接口,对实现的接口的精简.虽然不符合接口隔离原则,但是如果合理的使用此模式,对软件系统的设计还是蛮有好处.

1.结构(如下图)
vcfJq7vhvavL+dPQtNO/zbuntsu3osC0tcTH68fzzq/FybW9z+DTprXE19PPtc2zyKWhozxicj4KMS4y19PPtc2zKHN1YnN5c3RlbSm9x8mrOr/J0tTTw8qx09DSu7j2u/LV37bguPbX08+1zbMuw7/Su7j219PPtc2ztryyu8rH0ru49rWltsC1xMDgLLb4ysfSu7j2wOC1xLyvus+ho8O/0ru49tfTz7XNs7a8v8nS1LG7v827p7bL1rG907X308Msu/LV37G7w8XD5r3Hyau199PDoaPX08+1zbOyorK71qq1wMPFw+a1xLTm1NosttTT2tfTz7XNs7b40dQsw8XD5r32vfbKx8Ht0ru49r/Nu6e2y7b40tE8YnI+Cjxicj4KMi7KtcD9PGJyPgogINK7vNLSvdKpuavLvizTydChseS08yzG5NOm08PX08+1zbOho7K7ts/U9rzTLsi7tvgsuPe49tfTz7XNs7XEtcfCvLj3tsDBoi7V4r2ruPi5q8u+tcS53MDt0+vQxc+isLLIq7e9w+a0+MC00v67vC7Su7j2us/A7bXEuea7rr/J0tTKuSzOqtSxuaTJ6LzG0ru49ta70OjNs9K7tcfCvNK7tM68tL/JvfjI67bguPbX08+1zbO1xLWlteO1x8K8uabE3CzS1L21tc3By7CyyKu1xLfWz+26zbncwO21xM/7usQuyei8xs280M7I58/CPGJyPgo8aW1nIHNyYz0="https://www.cppentry.com/upload_files/article/49/1_k1fsh__.png" alt="\">
2.1医药公司单点登录接口即Facade接口。子系统
2.2子系统1、子系统2、子系统3、子系统4、子系统....,即子系统

门面模式具备以下的一些优势:
1.门面模式,通过隐藏子系统的组件,降低客户处理对象数量,以提高各个子系统的应用便捷性
2.门面模式降低子系统于客户端程序的耦合度,促进了系统的可扩展性和可维护性。
3.门面模式通过层次化的结构方式可提升系统的稳定性
基于以上几点,我认为在以下级种情形下采用门面模式进行如软件设计与实施
1.当设计者要求隐藏旧系统时,克使用门面模式的接口去实馅??http://www.2cto.com/kf/yidong/wp/" target="_blank" class="keylink">WPGJyPgoyLsjnufvX08+1zbPWrrzktcTSwMC10NS9z7jfLL/Jzai5/cPFw+bEo8q9vfjQ0L21tc08YnI+CjMutbHX08+1zbPP4LWxuLTU08qxLL/Jzai5/cPFw+bEo8q9zOG5qb3PvPK1pbXEvdO/2izS1MzhuN/Wwc+1zbO1xNLX08PQ1NPrzsi2qNDUPGJyPgo8YnI+CtOm08Ozob6wo7o8YnI+CtPDteex5Lj8oaLTw7XnsajP+qGi08O159T2yN2hori2t9G1yMrHtefBprmry77Tqs/6z7XNs7XEuPe49tOqz/rStc7x19PPtc2zLLnCudGy0LyywM/Iy9PJ09rJ7czl1K3S8iyw7MDttMvA4NK1zvG3x7Ojsrux46GjzqrBy73ivvbV4tK7zsrM4iy158GmuavLvr/Jzai5/cno1sPJz8PFt/7O8S7TycnPw8W3/s7xyMvUsSzOqrnCudGy0LyywM/Iy7T6sOzTw7XnseS4/KGi08O157Go0N6hotPDtefU9sjdoaK4trfR0rXO8aGjucK50bLQvLLAz8jL1LHT68nPw8W3/s7xyMvUscGqz7Whozxicj4KPGJyPgo8aW1nIHNyYz0="https://www.cppentry.com/upload_files/article/49/1_0r0z7__.png" alt="\">

实例代码如下:
package model.facade;
/*
 *电力营销业务接口
 */
public interface IElectricPowerMarketing {
	
	//代办用电变更
	public String electricityChange();
	
	//用电报修
	public String electricityBuild();
	
	//用电增容
	public String electricityAmplitude();
	
	//付费
	public String pay();
}
package model.facade;

/*
 * 电力营销业务的实现类
 */
public class IElectricPowerMarketingImpl implements IElectricPowerMarketing{
	
	//用电增容
	public String electricityAmplitude() {
		String a = "代办用电增容...";
		System.out.println(a);
		return a;
	}
	
    //用电报修
	public String electricityBuild() {
		String a = "代办用电报修...";
		System.out.println(a);
		return a;
	}
 
	//用电变更
	public String electricityChange() {
		String a = "代办用电变更...";
		System.out.println(a);
		return a;
	}
    
	//代办用点付费
	public String pay() {
		String a = "代办用电付费...";
		System.out.println(a);
		return a;
	}

}

package model.facade;
/*
 * 代办人类
 */
public class PublicAgent {
	
	private IElectricPowerMarketing electricPowerMarketing = new IElectricPowerMarketingImpl();
	
	//上门服务人员,为孤寡残疾老人提供办理、用电保修、用电增容用电变更、付费业务一体化服务
	public String send
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Codeforces Round #294 (Div. 2) .. 下一篇hdu 1269 迷宫城堡(强连通 tarja..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·【C语言】动态内存管 (2025-12-27 06:23:20)
·C语言中的内存管理 - (2025-12-27 06:23:16)
·C语言指南:C语言内 (2025-12-27 06:23:14)
·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)