外观模式
为系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
一 、 概述
外观模式是简化用户和子系统进行交互的成熟模式,外观模式的关键是为子系统提供一个称作外观的类,该外观类的实例负责和子系统中类的实例打交道。当用户想要和子系统中的若干个类的实例打交道时,可以代替地和子系统的外观类的实例打交道。二、外观模式的结构与使用
模式的结构中包括两种角色:
1.子系统(Subsystem)_1: CheckWord.java
public class CheckWord{
public final intbasicAmount=85;
Stringadvertisement;
int amount;
public CheckWord(Stringadvertisement){
this.advertisement=advertisement;
}
public void setChargeAmount(){
amount=advertisement.length()+basicAmount; //计算出计费字符数目
}
public intgetAmount(){
return amount;
}
}
1.子系统(Subsystem)_2: Charge.java
public class Charge{
public final intbasicCharge=12;
CheckWordcheckWord;
Charge(CheckWordcheckWord){
this.checkWord=checkWord;
}
public void giveCharge(){
int charge=checkWord.getAmount()*basicCharge;
System.out.println("广告费用:"+charge+"元");
}
}
1.子系统(Subsystem)_3 :TypeSeting.java
public class TypeSeting{
String advertisement;
public TypeSeting(Stringadvertisement){
this.advertisement=advertisement;
}
public void typeSeting(){
System.out.println("广告排版格式:");
System.out.println("********");
System.out.println(advertisement);
System.out.println("********");
}
}
.外观(Facade):ClientServerFacade.java
public class ClientServerFacade{
private CheckWordcheckWord;
private Charge charge;
private TypeSetingtypeSeting;
String advertisement;
public ClientServerFacade(Stringadvertisement){
this.advertisement=advertisement;
checkWord=new CheckWord(advertisement);
charge=new Charge(checkWord);
typeSeting=new TypeSeting(advertisement);
}
public void doAdvertisement(){
checkWord.setChargeAmount();
charge.giveCharge();
typeSeting.typeSeting();
}
}
3.应用 Application.java
public class Application{
public static void main(String args[]){
ClientServerFacadeclientFacade;
String clientAdvertisement="鹿花牌洗衣机,价格2356元,联系电话:1234567";
clientFacade=new ClientServerFacade(clientAdvertisement);
clientFacade.doAdvertisement();
}
}
三、外观模式的优点