码迷,mamicode.com
首页 > 其他好文 > 详细

七、外观模式

时间:2017-09-22 13:10:47      阅读:169      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!