【java设计模式-解决实际问题】

简单工厂

一个发送功能的厂,发送方式有(email\sms),需要用哪种发送方式就生产那个
在这里插入图片描述

在这里插入代码片
public class Test {
    public static void main(String[] args) {
        SendFactory sendFactory = new SendFactory();
        String sendType = "sms";
        Sender sender = sendFactory.produce(sendType);
        sender.send();
    }
}
在这里插入代码片
public class SendFactory {
    public Sender produce(String type) {
        if ("mail".equals(type)) {
            return new MailSender();
        } else if ("sms".equals(type)) {
            return new SmsSender();
        } else {
            System.out.println("请输入正确的类型!");
            return null;
        }
    }
}

`

在这里插入代码片
public interface Sender {
    public void send();
}
在这里插入代码片
public class SmsSender implements Sender{
    public void send() {
        System.out.println("发送一个sms----------");
    }
}
在这里插入代码片
public class MailSender implements Sender {

    public void send() {
        System.out.println("发送一个mail-----------");
    }
}

策略模式

定义计算器(类型:加法计算器),计算2数字的和
在这里插入图片描述

在这里插入代码片
public class Test {
    public static void main(String[] args) {
        //定义计算器(类型:加法计算器),计算2数字的和
        Calculator calculator = new Calculator();
        calculator.setiOperation(new AddOperation());
        int i = calculator.doOperation(2, 3);
        System.out.println(i);
    }
}
计算器
public class Calculator {
    /**
     * 运算功能接口
     */
    private IOperation iOperation;

    public void setiOperation(IOperation iOperation) {
        this.iOperation = iOperation;
    }
    /**
     * 运算方法
     * @return
     */
    public int doOperation(int num1,int num2){
        return this.iOperation.doOperation(num1,num2);
    }
}

计算接口
public interface IOperation {
    /**
     * 运算方法
     * @param num1
     * @param num2
     * @return
     */
    public int doOperation(int num1, int num2);
}

/**
 * 加法运算
 */
public class AddOperation implements IOperation{
    public int doOperation(int num1, int num2) {
        return num1 + num2;
    }
}

适配器模式

手机充电时,所需要的电压是比较小的,一般也就5v左右,但是我们家里的插座提供的电源都是220v,我们不可能直接把我们的手机接到220v的电源下,不然手机直接原地爆炸。所以这就出现了一个问题,就是两边的电压不对等,或者说两边的接口即输出电流的接口和接入手机的接口不兼容。那这时手机的电源适配器或者说充电器就出现了,通过一个转换头把220v电压转为手机可承受的5v电压,这样手机就充上电了

1、对象模式
在这里插入图片描述

在这里插入代码片
TypeC 接口
public interface TypeC {
    //这个接口输出5v电压
    void v5();
}
``

```java
在这里插入代码片
插座
public class Socket {
    public void v220() {
        System.out.println("接入220v电源");
    }
}

在这里插入代码片
电源适配器
public class PowerAdapter implements TypeC {
    public Socket socket;
    public void plugIntoSocket(Socket socket) {
        this.socket = socket;
    }
    public void v5() {
        socket.v220();
        System.out.println("输出5v电压的接线口");
    }
}
在这里插入代码片
public class Test {
    public static void main(String[] args) {
        PowerAdapter powerAdapter = new PowerAdapter();
        Socket socket = new Socket();
        powerAdapter.plugIntoSocket(socket);
        powerAdapter.v5();
    }
}

2、类适配器
在这里插入图片描述

在这里插入代码片
public class PowerAdapter extends Socket implements TypeC {
    @Override
    public void v5() {
        this.v220();
        System.out.println("输出5v电压的接线口");
    }
}
在这里插入代码片
public class Test {
    public static void main(String[] args) {
        PowerAdapter powerAdapter = new PowerAdapter();
        powerAdapter.v5();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值