
Java
前言
我们学习了如何用Java创建构建器模型和原型模型. 现在让我们学习结构化模式的适配器模式和桥接模式.
适配器模式

适配器

简介适配器模式充当两个不兼容接口之间的桥梁. 这种设计模式是一种结构模式,它结合了两个独立接口的功能. 简单来说,就是要通过一个通常称为转换器的特定接口使两个不兼容的类兼容. 寿命的典型示例是电器的电压. 美国的电压约为110V,而中国的电压为220V. 如果要在美国或日本使用电器,则需要使用转换器将110V转换为220V. 另一个非常典型的例子是曾经的通用充电器,它基本上可以为各种手机电池充电. 这里我们用一个简单的例子来说明. 某个视频播放器只能播放MP4格式的视频,但主流的视频格式包括MP4,AVI,RVMB等. 这时有一个软件,格式工厂用于转换视频格式(适配器),因此播放视频. 此时,我们可以使用适配器模式来完成代码的编写. 适配器模式主要有两种类型,一种是类适配器模式,它主要通过继承来实现适配器功能. 另一个是对象适配器模式,它通过组合来实现适配器功能. 首先是类适配器模式,需要完成以下步骤: 建立MP4,AVI,RVMB视频格式接口;建立视频播放器类以实现MP4视频格式类;编写格式工厂类,AVI,RVMB和其他格式将视频文件转换为MP4格式文件. 播放这些视频. 然后代码如下: 代码示例:
接口Mp4 {void playMp4();}接口Avi {void playAvi();}接口Rvmb {void playRvmb();}类VideoPlayer实现了Mp4 {@Overridepublic void playMp4(){System.out.println(“ play Mp4格式的视频文件. “);}}类FormatFactory扩展了VideoPlayer实现的Avi {@Overridepublic void playAvi(){//视频已转换为MP4格式playMp4();}} public static void main(String [] args){Mp4 mp4 =新的VideoPlayer(); mp4.playMp4(); Avi avi =新的FormatFactory(); avi.playAvi();}
运行结果:
以Mp4格式播放视频文件. 播放Mp4格式的视频文件.
通过上面的代码和运算结果,我们可以获得期望的结果. 如果视频播放器需要播放新的视频格式,则只需添加接口和格式工厂类即可. 太. 对象适配器模式
对象适配器

组合实现适配器功能. 因此,这里我们只需要更改格式工厂中的继承来创建对象. 更改后的代码如下: 代码示例
FormatFactory2类实现Rvmb {private Mp4 mp4; public FormatFactory2(Mp4 mp4){this.mp4 = mp4;} @覆盖public void playRvmb(){mp4.playMp4();}}
public static void main(字符串[] args){Rvmb rvmb = new FormatFactory2(new VideoPlayer()); rvmb.playRvmb();}
运行结果: 播放Mp4格式的视频文件. 这两种适配器模式均实现此功能,但是建议在此处使用对象适配器模式. 与类适配器模式相比,它更加灵活并且符合设计原则. 复合重用的原理: 尝试使用合成/聚合而不是继承. 适配器模式的优点: 改进了类重用性和灵活性. 适配器模式的缺点: 使用过多mp4播放器java版,系统将变得混乱且难以掌握. 注意: 适配器未在详细设计中添加,而是为了解决服务中项目的问题.
桥接模式
桥接模式

简介
Bridge用于分离抽象和实现,以便两者可以独立更改. 这种设计模式是结构模式. 通过在抽象和实现之间架起桥梁,它提供了两者之间的解耦. 字面上的解释是通过中间的桥梁将两边的事物连接起来,但是相关的两者不会互相影响. “大华设计模式”中的手机品牌和手机软件给我留下了深刻的印象. 市场上有许多品牌的手机和许多软件. 每部手机上安装的软件均不同. 手机品牌包括软件,但该软件不是手机的一部分,它们处于聚合关系中. 如果A品牌手机安装了a和b软件,而B品牌手机安装了b和c软件,则如果A品牌手机需要安装新的c软件,则只需添加软件却不知道软件是如何生产的. 同样,如果添加了新的C品牌手机,则只需安装所需的a,b或c软件. 好吧,我不需要胡说八道,我还是用一个例子来说明. 市场上有很多类型的笔,例如铅笔,黑色圆珠笔和红色圆珠笔. 试卷的种类也很多,例如考试用试卷和报纸用试卷. 一般来说,报纸上的文字是黑色的. 在这里,我们使用黑色的圆珠笔书写. 试卷上的分数颜色为红色. 在这里,我们使用红色的圆珠笔书写. 笔和纸彼此独立,但是在纸上书写并将它们关联在一起,我们可以在此处使用桥接模式. 实现步骤如下: 用这种书写方法定义一个笔类接口;定义红笔和黑笔的类以实现笔类的接口;定义纸类的抽象类,设置笔的类型,并需要实现所要编写的方法;定义纸张和新闻纸类,继承纸张类并实现该方法;写. 代码示例
界面笔{void write();}
RedPen类实现Pen {@Override public void write(){System.out.println(“ Red word”);}}
BlackPen类实现Pen {@Override public void write(){System.out.println(“黑字”);}}
抽象类Paper {保护笔笔; void setPen(钢笔){this.pen = pen;}抽象void Writing();}
class ExaminationPaper扩展Paper {@Override void写作(){pen.write();}}

NewsPaper类扩展Paper {@Override void Writing(){pen.write();}}
public static void main(字符串[] args){纸张=新的ExaminationPaper(); paper.setPen(新的RedPen()); paper.writing(); Paper paper2 = new NewsPaper(); paper2.setPen(新的BlackPen()); paper2.writing();}
运行结果
红字黑字
从以上结果中,我们可以获得所需的结果. 如果添加笔类或纸类mp4播放器java版,则只需添加相应的接口和实现,由于结构上的变化,不会直接相互影响.
桥接模式的优点:
1. 将抽象与实现分离以实现解耦; 2.增强的扩展能力.
桥接模式的缺点:
使系统看起来复杂,对新手不友好,并且如果没有某些抽象设计功能就很难理解.
使用场景:
一个类有两个独立更改的维度,两个维度都需要扩展.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-228355-1.html