
在上一篇文章中,我们学习了构建器模型和创建模型的原型模型. 在本文中,我们将学习适配器模式和结构模式的桥接模式.
简介
适配器模式用作两个不兼容接口之间的桥梁. 这种设计模式是一种结构模式,结合了两个独立接口的功能.
简单地说,两个不兼容的类通过某个接口(通常称为转换器)兼容.
典型的寿命示例是电器的电压. 美国的电压约为110V,而中国的电压为220V. 如果要使用美国或日本的电器,则需要使用转换器将110V转换为220V. . 另一个非常典型的例子是曾经的通用充电器,它基本上可以为各种手机电池充电.
这里我们用一个简单的例子来说明.
视频播放器只能播放MP4格式的视频,但主流的视频格式包括MP4,AVI,RVMB等. 这时,有一个软件,格式工厂用于转换视频格式(适配器)播放视频. 目前,我们可以使用适配器模式来完成代码的编写.
适配器模式主要有两种类型,一种是类适配器模式,主要通过继承来实现适配器功能. 另一个是对象适配器模式,它通过组合来实现适配器功能.
首先是类似适配器的模式,它需要完成以下步骤:
建立MP4,AVI,RVMB视频格式界面;建立视频播放器类,实现MP4视频格式类;编写格式工厂类以将AVI,RVMB和其他格式的视频文件转换为MP4格式的文件. 播放这些视频.

代码如下:
代码示例:
interface Mp4{
void playMp4();
}
interface Avi{
void playAvi();
}
interface Rvmb{
void playRvmb();
}
class VideoPlayer implements Mp4{
@Override
public void playMp4() {
System.out.println("播放Mp4格式的视频文件.");
}
}
class FormatFactory extends VideoPlayer implements Avi{
@Override
public void playAvi() {
//转换成MP4格式的视频
playMp4();
}
}
public static void main(String[] args) {
Mp4 mp4=new VideoPlayer();
mp4.playMp4();
Avi avi=new FormatFactory();
avi.playAvi();
}
运行结果:
播放Mp4格式的视频文件.
播放Mp4格式的视频文件.
通过上面的代码和运行结果,我们可以获得期望的结果. 如果需要使用此视频播放器播放新的视频格式,只需添加接口和格式工厂类即可. 也是.
对象适配器模式
组合以实现适配器功能.
所以在这里,我们只需要更改格式工厂中的继承关系即可创建对象.
更改后的代码如下:

代码示例
class FormatFactory2 implements Rvmb{
private Mp4 mp4;
public FormatFactory2(Mp4 mp4) {
this.mp4=mp4;
}
@Override
public void playRvmb() {
mp4.playMp4();
}
}
public static void main(String[] args) {
Rvmb rvmb=new FormatFactory2(new VideoPlayer());
rvmb.playRvmb();
}
运行结果:
播放Mp4格式的视频文件.
在两种适配器模式下都实现了该功能,但是在这里建议使用对象适配器模式. 与类适配器模式相比,它更加灵活,并且在设计原则上符合复合重用的原则:
尝试使用综合/聚合而不是继承.
适配器模式的优点:
改进的类重用性和灵活性.
适配器模式的缺点:
过度使用会使系统混乱并且难以掌握.

注意:
在详细设计过程中未添加适配器,而是为了解决服务中项目的问题.
简介
Bridge用于分离抽象和实现,以便两者可以独立更改. 这种设计模式是一种结构模式. 通过在抽象和实现之间架起桥梁,它提供了两者之间的解耦.
字面意义是通过中间的桥梁将两边的事物连接起来,但是相关的两者不会互相影响. “大谈话设计模式”给手机品牌和手机软件留下了深刻的印象. 手机的品牌很多,市场上有很多软件. 每个手机中安装的软件都不同. 手机品牌包括软件,但该软件不属于手机,它们处于聚合关系中. 如果A品牌手机安装了a和b软件,而B品牌手机安装了b和c软件,则如果A品牌手机需要安装新的c软件,则只需添加软件却不知道软件是如何生产的. 同样,如果添加了新的C品牌手机,则只需安装所需的a,b或c软件.
好的,我不需要胡说八道,我仍然使用一个例子来说明.
市场上有很多类型的笔,例如铅笔,黑色圆珠笔和红色圆珠笔. 纸张也有很多类型,例如用于考试纸的纸张和用于报纸的纸. 一般来说,报纸上的文字是黑色的. 在这里,我们使用黑色的圆珠笔书写. 试卷上的分数颜色为红色. 在这里,我们使用红色的圆珠笔书写. 笔和纸是彼此独立的,但是在纸上书写并将它们关联在一起,我们可以在此处使用桥接模式.
实现步骤如下:
使用这种书写方法定义笔类接口;定义红笔和黑笔的类,以实现笔类的接口;定义纸类的抽象类,设置笔的类型,并需要实现所写的方法定义卷纸和新闻纸mp4播放器java版,继承纸并实现该方法;写.
代码示例

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