适配器在生活中经常见到,如手机、笔记本电脑的电源适配器,USB转接头都是常见的适配器。在设计模式当中,适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。在类适配器模式中,适配器与适配者之间是继承(实现)关系;在对象适配器模式中,适配器与适配者之间是关联关系。具体实现类适配器模式典型的类适配器模式代码示例如下:classAdapterextendsAdapteeimplementsTarget{publicvoidrequest(){//转发调用super.specificRequest();}}从上述的代码可以看出,典型的类适配器模式就是通过继承的方式,使用子类方法调用父类的方法,使
简介桥接设计模式(BridgeDesignPattern)也叫作桥梁模式,其描述是将实现和抽象放在两个不同的类层次中,使两个层次可以独立地变化。桥接模式采用抽象关联取代了传统的多层继承,将类之间的静态继承关系转化为动态的对象组合关系,使系统更加灵活,并易于扩展,同时有效控制了系统中类的个数。在桥接模式中,有以下概念需要理解:抽象化:将对象共同的性质抽取出去而形成类的过程实现化:和抽象化是一个互逆的过程,实现化是对抽象化事物的进一步具体化脱耦:将抽象化和实现化之间强关联改换成弱关联,将两个角色之间的继承关系改为关联关系桥接模式主要解决的是多维度的指数级变化。具体实现以手机为例,手机既可以按照品牌
简介装饰器模式主要解决的问题是,如果使用子类继承的方式扩展一个类,随着扩展功能的增多,子类会非常膨胀,包括子类的数量或子类的方法数。装饰器模式其核心还是“用组合替代继承”,但是相对于普通的组合关系,装饰器模式还有两个比较特殊的地方:装饰器类和原始类继承同样的父类,这样就可以对原始类“嵌套”多个装饰器类装饰器类是对功能的加强,这也是装饰器模式应用场景的一个重要特点具体实现以图书馆的图书和借阅者为例,在已定义了实体类的基础上,增加借书计数的功能。定义图书馆的抽象类:publicabstractclassLibrary{//借书publicabstractvoidborrowBook();//还书p
简介装饰器模式主要解决的问题是,如果使用子类继承的方式扩展一个类,随着扩展功能的增多,子类会非常膨胀,包括子类的数量或子类的方法数。装饰器模式其核心还是“用组合替代继承”,但是相对于普通的组合关系,装饰器模式还有两个比较特殊的地方:装饰器类和原始类继承同样的父类,这样就可以对原始类“嵌套”多个装饰器类装饰器类是对功能的加强,这也是装饰器模式应用场景的一个重要特点具体实现以图书馆的图书和借阅者为例,在已定义了实体类的基础上,增加借书计数的功能。定义图书馆的抽象类:publicabstractclassLibrary{//借书publicabstractvoidborrowBook();//还书p
简介组合模式就是组合多个对象形成树形结构以表示具有“部分-整体”关系的层次结构。组合模式对单个对象(叶子对象)和组合对象(容器对象)的使用具有一致性。组合模式的关键是定义一个抽象构件类,它既可以代表叶子,也可以代表容器。客户端针对该抽象构件进行编程,无需知道它到底表示的是叶子还是容器,可以对其进行统一处理。具体实现对于组合模式的抽象构件角色,其代码示例如下:publicabstractclassComponent{//增加成员publicabstractvoidadd(Componentc);//删除成员publicabstractvoidremove(Componentc);//获取成员pu
简介组合模式就是组合多个对象形成树形结构以表示具有“部分-整体”关系的层次结构。组合模式对单个对象(叶子对象)和组合对象(容器对象)的使用具有一致性。组合模式的关键是定义一个抽象构件类,它既可以代表叶子,也可以代表容器。客户端针对该抽象构件进行编程,无需知道它到底表示的是叶子还是容器,可以对其进行统一处理。具体实现对于组合模式的抽象构件角色,其代码示例如下:publicabstractclassComponent{//增加成员publicabstractvoidadd(Componentc);//删除成员publicabstractvoidremove(Componentc);//获取成员pu
简介概念举个简单的例说明代理模式就是:假如现在需要买一辆二手车,可以自己去找车源、做质量检测等一系列车辆过户的流程,但是这实在太浪费时间和精力了,其实可以通过找中介的方式,同样会找车源、做质量检测等一系列车辆过户的流程,但是这样自己就只需要选车、付钱即可。分类在实际开发中,代理模式根据其目的和实现方式的不同可分为很多种类,如下是常用的几种代理模式:远程代理:为一个位于不同地址空间的对象提供一个本地的代理对象,这个不同的地址空间可以在同一台主机中,也可以在另一台主机中虚拟代理:如果需要创建一个资源消耗较大的对象,可以先创建一个消耗相对较小的对象来表示,真实对象只有需要时才会被真正创建保护代理:控
简介概念举个简单的例说明代理模式就是:假如现在需要买一辆二手车,可以自己去找车源、做质量检测等一系列车辆过户的流程,但是这实在太浪费时间和精力了,其实可以通过找中介的方式,同样会找车源、做质量检测等一系列车辆过户的流程,但是这样自己就只需要选车、付钱即可。分类在实际开发中,代理模式根据其目的和实现方式的不同可分为很多种类,如下是常用的几种代理模式:远程代理:为一个位于不同地址空间的对象提供一个本地的代理对象,这个不同的地址空间可以在同一台主机中,也可以在另一台主机中虚拟代理:如果需要创建一个资源消耗较大的对象,可以先创建一个消耗相对较小的对象来表示,真实对象只有需要时才会被真正创建保护代理:控
其他章节请看:webgl系列初识WebGL什么是WebGLwebgl在支持canvas的浏览器中进行2d或3d渲染。webgl程序除了有Html、javascript,还需要加入着色器语言(GLSLES)。WebGL使得网页在支持HTML标签的浏览器中,不需要使用任何插件,便可以使用基于OpenGLES2.0的API在canvas中进行3D渲染——MDNWebGL教程通过caniuse得知webgl(98.15%)和webgl2.0(94.12%)的支持情况。请看下图:Tip:个人计算机上,绘制三维最广泛使用的技术有Direct3D和OpenGL,前者是微软的,后者是开源免费的。OpenGL有
其他章节请看:webgl系列初识WebGL什么是WebGLwebgl在支持canvas的浏览器中进行2d或3d渲染。webgl程序除了有Html、javascript,还需要加入着色器语言(GLSLES)。WebGL使得网页在支持HTML标签的浏览器中,不需要使用任何插件,便可以使用基于OpenGLES2.0的API在canvas中进行3D渲染——MDNWebGL教程通过caniuse得知webgl(98.15%)和webgl2.0(94.12%)的支持情况。请看下图:Tip:个人计算机上,绘制三维最广泛使用的技术有Direct3D和OpenGL,前者是微软的,后者是开源免费的。OpenGL有