标签:ati stat public person 关注 sys int 面向 情况
想象一下,当一个系统有很多个实现类,例如100个,那么你就得去找这100个类,这是相当麻烦的工作,而且会让程序变得难以使用。那如果我们把这100个类的使用集中在一个类呢?就像一个工具包一样,你只需要关注这一个类即可。
外观模式,为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。
如图:
使用方只需要面向一个类,是不是显得非常方便?代码如下:
/** * 外观模式 * @author lay */ public class FacadeDemo { public static void main(String[] args) { PersonMaker personMaker = new PersonMaker(); personMaker.studentSay(); personMaker.lawerSay(); } } class PersonMaker{ // 外观类 private Person lawer; private Person student; public PersonMaker(){ // 构建类实例对象 this.lawer = new Lawer(); this.student = new Student(); } public void studentSay(){ // 提供student类对外接口 student.say(); } public void lawerSay(){ // 提供lawer类对外接口 lawer.say(); } } interface Person{ public void say(); } class Lawer implements Person{ @Override public void say() { System.out.println("i‘m a lawer"); } } class Student implements Person{ @Override public void say() { System.out.println("i‘m a student"); } }
优点:如果在API比较复杂的情况下,可以采用外观模式让使用变得简单。
缺点:不过这种模式也存在问题,如果我更改了实现类,那么也会导致修改外观类,等同于增加了要修改的部分,这样会增大修改出错的可能。另外,由于用户直接面向了外观类,因而这个类无法使用任何继承,重写等java特性。
标签:ati stat public person 关注 sys int 面向 情况
原文地址:http://www.cnblogs.com/lay2017/p/7574215.html