作者:某人_Valar
如需转载请保留原文链接;
设计模式的3大类:
- 创建型模式(5种)建造者模式,单例模式,工厂方法模式,抽象工厂模式,原型模式。
- 结构性模式(7种)适配器模式,装饰模式,代理模式,外观模式,桥接模式,组合模式,享元模式。
- 行为型模式(11种)策略模式,模板方法模式,观察者模式,迭代器模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,中介者模式,解释器模式。
1. 什么是外观模式
外观模式隐藏了系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。
一般在外观模式中有下面几个角色:
- Facade:外观类,知道哪些子系统负责处理请求,将客户端的请求代理给适当的子系统对象。
- Subsystem:子系统类,可以有一个或者多个子系统。实现子系统的功能,处理外观类指派的任务,注意子系统类不含有外观类的引用。
2. 外观模式的简单实现
(1)子系统类
//子系统招式
public class Zhaoshi {
public void TaiJiQuan(){
System.out.println("使用招式太极拳");
}
public void QiShangQuan(){
System.out.println("使用招式七伤拳");
}
public void ShengHuo(){
System.out.println("使用招式圣火令");
}
}
//子系统内功
public class NeiGong {
public void JiuYang(){
System.out.println("使用九阳神功");
}
public void QianKun(){
System.out.println("使用乾坤大挪移");
}
}
//子系统经脉
public class JingMai {
public void jingmai(){
System.out.println("开启经脉");
}
}
(2)外观类
初始化外观类的同时将各个子系统类创建好,并进行搭配。
//外观类张无忌
public class ZhangWuJi {
private JingMai jingMai;
private Zhaoshi zhaoshi;
private NeiGong neiGong;
public ZhangWuJi() {
jingMai = new JingMai();
zhaoshi = new Zhaoshi();
neiGong = new NeiGong();
}
/**
* 使用乾坤大挪移
*/
public void Qiankun(){
jingMai.jingmai();// 开启经脉
neiGong.QianKun(); //使用内功乾坤大挪移
}
/**
* 使用七伤拳
*/
public void Qishang(){
jingMai.jingmai();// 开启经脉
neiGong.JiuYang(); //使用内功九阳神功
zhaoshi.QiShangQuan(); // 使用招式七伤拳
}
}
(3)测试类
客户端调用
public class Test {
public static void main(String[] args){
ZhangWuJi zhangWuJi = new ZhangWuJi();
//张无忌使用乾坤大挪移
zhangWuJi.Qiankun();
//张无忌使用七伤拳
zhangWuJi.Qishang();
}
}
运行结果:
image.png
3. 外观模式优缺点
优点: 1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。
缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。
4.外观模式与装饰模式的区别
装饰模式:封装一个对象,并提供额外的行为,用组合的方式来替代继承以扩展类的功能。
外观模式:封装许多对象,简化它们的接口,定义了一个更高层的接口,使得子系统更容易被调用。
参考:
《Android进阶之光》
外观模式-菜鸟教程
网友评论