设计模式之外观模式
来源:互联网 发布:台达触摸屏编程视频 编辑:程序博客网 时间: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的地方就会跟着被修改。
阅读全文
0 0
- 设计模式之外观
- 设计模式之外观
- 设计模式 之 外观
- 设计模式之外观
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- CAD怎么批量转成PDF格式
- C/C++中作为函数参数的 i++ 与 ++i
- Spark的学习笔记
- Nginx Sticky的使用及踩过的坑(nginx-sticky-module)
- 美女大头的通达OA2017最新版本的全年托管服务
- 设计模式之外观模式
- java中json字符串的拼接
- nginx 初探
- Blog11@linux文件系统间的传输、归档及压缩
- java的对称加密算法 AES -----加密和解密
- 开闭原则
- iptables使用介绍
- 51nod 1565 模糊搜索 fft
- linux errno详解