重拾设计模式-外观模式

简介:
外观模式也交门面模式,是使用最频繁的一种结构型模式,常体为面向对象的封装特性。这种模式是对外提供一个统一一致的接口来调用子模块,使得子模块更容易使用。

实现及测试如下

/**
 * 酒店实体类,包含各种属性
 * @author dedu
 *
 */
public class Hotel {
	
	private Brand brand;
	
	private String name;
	
	public Brand getBrand() {
		return brand;
	}
	public void setBrand(Brand brand) {
		this.brand = brand;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Hotel(Brand brand, String name) {
		super();
		this.brand = brand;
		this.name = name;
	}
	@Override
	public String toString() {
		return "品牌为" + brand + ", 名字叫" + name;
	}
}
/**
 * 酒店品牌属性
 * @author dedu
 *
 */
public class Brand {
	private String name;
	public Brand(String name) {
		super();
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return name;
	}
}

/**
 * 酒店子功能的外观接口,定义各个功能的具体实现并提供统一接口
 * @author dedu
 *
 */
public class HotelFacade {
	
	private Hotel hotel;
	
	private Brand brand;
	
	public HotelFacade() {
		brand = new Brand("携程");
		hotel = new Hotel(brand, "五星级大酒店");
	}

	public void bookHotel() {
		System.out.println("已预订酒店:"+hotel);
	}
}

测试

public static void main(String[] args) {
		//没有使用外观模式时,任何细节都需要客户端处理
		Brand brand = new Brand("亚朵");
		Hotel hotel = new Hotel(brand, "国宾大酒店");
		System.out.println("已预订酒店:"+hotel);
		
		//使用此模式后,客户端只需调用统一接口即可
		HotelFacade hotelFacade = new HotelFacade();
		hotelFacade.bookHotel();
	}
总结
外观模式多体现在封装上,常见使用场景如各种技术框架的封装如对JDBC封装的DBUtil、对日期封装的DateUtil、Spring封装的JDBCTemplete等。此模式的重点在于外观类Facade中对逻辑的封装和对外提供的接口上。Facade类需要了解所涉及的子模块细节方法和属性,并进行组合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值