设计模式之外观模式

来源:互联网 发布:台达触摸屏编程视频 编辑:程序博客网 时间:2024/06/05 14:47

设计模式之外观模式

1.定义:

          为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。

2.引入:

        我们以开车时候自动挡和手动挡加速换挡为例:

       手动挡的加速换挡过程:松油门(freeAccelerator)-->踩离合踏板(pushClutch)-->换挡(shiftGear)-->放离合(freeClutch)-->踩油门(pushAccelerator

      

      代码实现:

public class User {public static void main(String[] args) {// TODO Auto-generated method stubCar car = new CarImpl();car.pushClutch();car.shiftGear();car.freeClutch();}} interface Car{//踩离合public void pushClutch();//换挡public void shiftGear();//松离合public void freeClutch();} class CarImpl implements Car{@Overridepublic void pushClutch() {System.out.println("踩离合");}@Overridepublic void shiftGear() {System.out.println("换挡");}@Overridepublic void freeClutch() {System.out.println("松离合");}}

  

        自动挡的加速换挡过程:踩油门---->自动变速箱(踩离合踏板(pushClutch)-->换挡(shiftGear)-->放离合(freeClutch))--->踩油门


   代码实现:

public class User {public static void main(String[] args) {// TODO Auto-generated method stubAutoShiftCar car = new AutoShiftCar();car.autoShift();}}class AutoShiftCar{Car car = new CarImpl() ;public void autoShift() {car.pushClutch();car.shiftGear();car.freeClutch();}} interface Car{//踩离合public void pushClutch();//换挡public void shiftGear();//松离合public void freeClutch();} class CarImpl implements Car{@Overridepublic void pushClutch() {System.out.println("踩离合");}@Overridepublic void shiftGear() {System.out.println("换挡");}@Overridepublic void freeClutch() {System.out.println("松离合");}}

从类图中和代码中可以看出,自动挡的变速箱就是讲手动挡变速箱的换挡过程封装到一个方法中,这样用户使用的时候就不需要知道具体的换挡的过程,只需要去调用自动换挡的方法autoShift,它就会把整个换挡的三个方法(pushClutch---shifGear---freeClutch)组合起来。

3.说明

      外观模式就是使用一个接口group将一组特定顺序的接口(A--B--C)组合起来,当需要调用特定顺序的一组接口(A--B--C)的时候,就只需要调用对于的那个接口group就行;组合的接口顺序发生改变时(A--B--C修改为C--B--A),我们也只需要去修改接口group,引用到group的地方就会跟着被修改。

   


原创粉丝点击