设计模式之适配器模式与外观模式

本文深入探讨了适配器模式和外观模式在软件设计中的应用。适配器模式用于将现有类的接口转换为所需的另一种接口,适用于解决接口不匹配的问题;而外观模式则提供了一个统一的接口,简化子系统接口的使用,增强软件的易用性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义:将一个类的接口,转换成客户期望的另一个接口。当需要用一个现有的类而其接口并不符合你的需要时就用适配器。属于结构性设计模式

适用场景:

  1. 已经存在的类它的方法和需求不匹配
  2. 适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案

首先来个类图:


这个类图够简单但是充满了良好的OO设计原则,使用对象组合,以修改的接口包装被适配者:被适配者的任何子类都可以搭配着适配器使用。

//一个已经存在的类220v充电器
public class AC220 {

    public int outputAC220(){
        int output = 220;
        System.out.println("输出交流电压"+output+"V");
        return output;
    }
}

// 一个直流电压5v
public interface DC5 {
    int outputDC5V();
}


//220v适配5v适配器
// 将一个类的接口AC220,转换成客户期望的另一个接口DC5
public class PowerAdapter implements DC5 {

    //适配器模式将一个对象包装起来以改变其接口
    private AC220 ac220;
    public PowerAdapter(AC220 ac220){
        this.ac220 = ac220;
    }
    @Override
    public int outputDC5V() {
        int adapterInput = ac220.outputAC220();
            //变压器...
        // 适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口
        int adapterOutput = adapterInput/44;
        System.out.println("使用 PowerAdapter 输入 AC:"+adapterInput+"V"+"输出DC:"+adapterOutput+"V");
        return adapterOutput;
    }
}

public class DCAdapterTest {
    public static void main(String[] args) {
        //客户通过调用目标接口适用适配器的方法对适配器发出请求
        DC5 dc5 = new PowerAdapter(new AC220());
        dc5.outputDC5V();
    }
}

适配器模式UML:

总结一把:适配器模式将一个对象包装起来以改变其接口。装饰者将一个对象包装起来以增加新的行为和责任。而外观将一群对象包装起来以简化接口。

外观模式定义:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义 了一个高层接口,让子系统更容易使用。

来个图:

 


public class HomeTheaterFacade{

    Tuner tuner;
    DvdPlayer dvdplayer;
    CdPlayer cdplayer;
    Screen screen;
    


    public HomeTheaterFacade(Tuner tuner,DvdPlayer dvdplayer,
                            CdPlayer cdplayer,Screen screen){

            this.tuner=tuner;
            this.dvdPlayer=dvdPlayer;
            this.cdPlayer=cdPlayer;
            this.screen=screen;

//外观将子系统的组件引入构造器中
    }



    public void watchMovie(){


        tuner.on();
        
        dvdPlayer.on();
        dvdPlayer.setDvd();
        cdplayer.setCd();
        screen.down();

        

//将子系统的组件整合成一个统一的接口





    }










}

记住:外观不止是简化了接口,也将客户从组件的子系统中解耦。这也就是最少知识原则。外观和适配器可以包装很多类,但是外观的意图是简化接口,而适配器的意图是将接口转换成不同的接口。

最少知识原则:就任何对象而言,在该对象的方法内,我们只调用如下方法。

  1. 该对象本身
  2. 被当做方法的参数传进来的对象
  3. 此方法所创建的或者实例化的对象
  4. 对象的任何组件

 

 

内容概要:本文探讨了在MATLAB/SimuLink环境中进行三相STATCOM(静态同步补偿器)无功补偿的技术方法及其仿真过程。首先介绍了STATCOM作为无功功率补偿装置的工作原理,即通过调节交流电压的幅值相位来实现对无功功率的有效管理。接着详细描述了在MATLAB/SimuLink平台下构建三相STATCOM仿真模型的具体步骤,包括创建新模型、添加电源负载、搭建主电路、加入控制模块以及完成整个电路的连接。然后阐述了如何通过对STATCOM输出电压电流的精确调控达到无功补偿的目的,并展示了具体的仿真结果分析方法,如读取仿真数据、提取关键参数、绘制无功功率变化曲线等。最后指出,这种技术可以显著提升电力系统的稳定性电能质量,展望了STATCOM在未来的发展潜力。 适合人群:电气工程专业学生、从事电力系统相关工作的技术人员、希望深入了解无功补偿技术的研究人员。 使用场景及目标:适用于想要掌握MATLAB/SimuLink软件操作技能的人群,特别是那些专注于电力电子领域的从业者;旨在帮助他们学会建立复杂的电力系统仿真模型,以便更好地理解STATCOM的工作机制,进而优化实际项目中的无功补偿方案。 其他说明:文中提供的实例代码可以帮助读者直观地了解如何从零开始构建一个完整的三相STATCOM仿真环境,并通过形化的方式展示无功补偿的效果,便于进一步的学习研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值