设计模式之策略模式

文章展示了在Java中如何使用接口来定义电器设备的行为,如电视和洗衣机,并通过实现这些接口创建具体类。此外,还应用了策略模式来执行电器的操作,以及使用工厂模式动态创建不同类型的电器实例。
摘要由CSDN通过智能技术生成

1.声明接口

//电器接口
public interface electrical {
    //打开
    void turnOn();
    //关闭
    void turnOff();
    //使用
    void use();
}

2.电视实现类

public class television implements electrical{
    @Override
    public void turnOn() {
        System.out.println("电视打开了");
    }

    @Override
    public void turnOff() {
        System.out.println("电视关机了");
    }

    @Override
    public void use() {
        System.out.println("电视正在播放中");
    }
}

3.洗衣机实现类

public class washingMachine implements electrical{
    @Override
    public void turnOn() {
        System.out.println("洗衣机打开了");
    }

    @Override
    public void turnOff() {
        System.out.println("洗衣机关机了");
    }

    @Override
    public void use() {
        System.out.println("洗衣机正在使用中");
    }
}

4.策略类,用于执行电器操作

public class electricalAppliances {
    private electrical appliances;

    public electricalAppliances(electrical appliances) {
        this.appliances = appliances;
    }
    public void use(){
        appliances.turnOn();
        appliances.turnOff();
        appliances.use();
        System.out.println("=================");
    }
}

5.测试

public class electricalTest {
    public static void main(String[] args) {
        //电视策略
        electricalAppliances television=new electricalAppliances(new television());
        television.use();
        
        
        //洗衣机策略
        electricalAppliances washingMachine=new electricalAppliances(new            washingMachine());
        washingMachine.use();
    }
  
}

补充:

工厂模式:

public class factory {
    public static electrical cteateElectrical(String type){
        if (type.equals("television")){
            return new television();
        }else if (type.equals("washingMachine")){
            return new washingMachine();
        }else {
            return null;
        }
    }
}

测试:

public class factoryTest {
    public static void main(String[] args) {
        //创建一个洗衣机对象
        electrical washingMachine = factory.cteateElectrical("washingMachine");
        washingMachine.turnOn();
        washingMachine.turnOff();
        washingMachine.use();
        System.out.println("===================");

        //创建一个电视对象
        electrical television = factory.cteateElectrical("television");
        television.turnOn();
        television.turnOff();
        television.use();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值