外观设计模式

外观设计模式:
为子系统中的一组接口提供一个一致的界面,此模式定义一个高层接口,这个接口使得这个子系统更加容易使用。引入外观模式后,客户端只需要和外观接收交互,而不需要于子系统交互,从而降低客户端于子系统的耦合度。

外观设计模式组成:
1、外观角色(Facade):是外观设计模式的核心类,知道子系统的功能,负责和客户端交互,并根据客户端已有的需求预定几种功能组合。

2、子系统角色(SubSystem):实现子系统的功能,并处理由外观角色指派的任务。

3、客户端角色(client):调用外观角色实现相应功能。

代码示例:

// 子系统1
public class SubSystemOne {

    public void MethodOne(){
        System.out.println("子系统方法1");
    }
}

// 子系统2
public class SubSystemTwo {

    public void MethodTwo(){
        System.out.println("子系统方法2");
    }

}


// 子系统3
public class SubSystemThree {

    public void MethodThree(){
        System.out.println("子系统方法3");
    }
}


// 子系统4
public class SubSystemFour {

    public void MethodFour(){
        System.out.println("子系统方法4");
    }
}


// 外观类

public class Facade {

    private SubSystemOne subSystemOne;
    private SubSystemTwo subSystemTwo;
    private SubSystemThree subSystemThree;
    private SubSystemFour subSystemFour;

    public Facade() {
        // TODO Auto-generated constructor stub
        subSystemOne = new SubSystemOne();
        subSystemTwo = new SubSystemTwo();
        subSystemThree = new SubSystemThree();
        subSystemFour = new SubSystemFour();
    }

    public void MethodA(){
        System.out.println("方法组A------------");
        subSystemOne.MethodOne();
        subSystemTwo.MethodTwo();
    }

    public void MethodB(){
        System.out.println("方法组B------------");
        subSystemFour.MethodFour();
        subSystemThree.MethodThree();
    }

}

// 客户端
public class Main {

    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.MethodA();

        facade.MethodB();
    }
}

uml图:
这里写图片描述

分析:
外观设计模式使用主要分三个阶段来说:
1、在设计初期阶段,应该有意识的将不同的两个层分离,在层与层之间建立外观Facade,这样可以使复杂的子系统提供一个简单的接口,使得耦合度大大降低。

2、在开发阶段,子系统往往不断的重构演化而变得越来越复杂,这使得外部调用子系统类越来越困难。这时候增加外观Facade可以提供一个简单的接口,降低外部和子系统间的依赖。

3、在维护一个遗留的大型系统时,可能这个系统已经非常难以维护可扩展了,但因为它有重要功能,新的需求必须依赖它。这时可以为新系统开发一个外观Facade,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统和Facade对象交互,Facade与遗留代码交互所有复杂的工作。
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值