博客
关于我
设计模式之适配器模式
阅读量:706 次
发布时间:2019-03-21

本文共 1656 字,大约阅读时间需要 5 分钟。

Adapter 模式:接口适配器实现模式优化

Adapter 模式(接口适配器模式)是一种软件设计模式,用于解决现有类与新系统或新环境不兼容的问题。这种模式通过创建一个间接将两个不兼容的接口连接起来,从而达成双方的平衡。

Adapter 模式的核心思想是当系统中有类的接口与其他代码不兼容时,通过使用适配器类解决不兼容问题,使得原本无法一起工作的类能够协同工作。这种方法不仅提升了系统的灵活性,还增强了系统的可维护性和可扩展性。

Adapter 模式主要应用于以下场景:

  • 当需要将某些现有的类与其他系统或环境集成时,尤其是当这些类的接口与目标系统的需求不匹配时,Adapter 模式是一个非常有效的解决方案。通过在源系统和目标系统之间设计一个适配器,实现两者的互操作性。

  • 在类的继承关系中,当某些子类缺少一些公共功能或接口时,Adapter 模式可以用来补充这些缺少的功能,使其能够与超类或其他部分的系统无缝对接。

  • Adapter 模式的关键优点包括:

  • 符合单一职责原则:适配器类专注于将源接口转换为目标接口,避免混淆和误用。

  • 符合开闭原则:系统可以自开放,而不必Modified为不支持修改的代码架构,也能支持已有的不兼容的系统接口。

  • 以下是Adapter 模式的实现示例:

    对象适配器示例:

    package com.fen.dou.sjms.adapter;public class ObjectAdapterTest {    public static void main(String[] args) {        Adaptee adaptee = new Adaptee();        Target target = new Adapter(adaptee);        target.output5v();    }}interface Target {    int output5v();}class Adapter implements Target {    private Adaptee adaptee;    public Adapter(Adaptee adaptee) {        this.adaptee = adaptee;    }    @Override    public int output5v() {        int i = adaptee.output220v();         return 5;    }}class Adaptee {    public int output220v() {        return 220;    }}

    类适配器示例:

    package com.fen.dou.sjms.adapter;public class ClassAdapterTest {    public static void main(String[] args) {        Adapter adpater = new Adapter();        adpater.output5v();    }}class Adapter extends Adaptee implements Target {    @Override    public int output5v() {        int i = output220v();        return 5;    }}interface Target {    int output5v();}class Adaptee {    public int output220v() {        return 220;    }}

    通过以上示例可以看出,Adapter 模式允许原本接口不兼容的类或系统通过适配器实现信息透 bridge,实现两者的协同工作。无论是对象适配器还是类适配器,都能够满足适配需求,确保系统的稳定性和兼容性。

    转载地址:http://cggez.baihongyu.com/

    你可能感兴趣的文章
    Nitrux 3.8 发布!性能全面提升,带来非凡体验
    查看>>
    NI笔试——大数加法
    查看>>
    NLog 自定义字段 写入 oracle
    查看>>
    NLog类库使用探索——详解配置
    查看>>
    NLP 基于kashgari和BERT实现中文命名实体识别(NER)
    查看>>
    NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
    查看>>
    NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
    查看>>
    NLP学习笔记:使用 Python 进行NLTK
    查看>>
    NLP的神经网络训练的新模式
    查看>>
    NLP采用Bert进行简单文本情感分类
    查看>>
    NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
    查看>>
    NLP:使用 SciKit Learn 的文本矢量化方法
    查看>>
    Nmap扫描教程之Nmap基础知识
    查看>>
    Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
    查看>>
    NMAP网络扫描工具的安装与使用
    查看>>
    NMF(非负矩阵分解)
    查看>>
    nmon_x86_64_centos7工具如何使用
    查看>>
    NN&DL4.1 Deep L-layer neural network简介
    查看>>
    NN&DL4.3 Getting your matrix dimensions right
    查看>>
    NN&DL4.8 What does this have to do with the brain?
    查看>>