枚举去除if(策略模式)

	//单一事件直接调用
    public static  String todo(String day) {
        CHeckDay cHeckDay = new CHeckDay();
        return cHeckDay.day(DayEnum.valueOf(day));
    }
	//多事件重复使用
    public static   String todoNew (String day) {
        CHeckDay cHeckDay = new CHeckDay();
        return cHeckDay.dayNew(DayEnumNew.valueOf(day));
    }

    public static void main(String[] args) {
        System.out.println(todoNew(("one")));
    }
package com.eaton.guan.cms.config;


/**
 * @Author : hyx
 * @CreateDate : 2024-01-01 23:12
 */
public class CHeckDay {

    public  String day(DayEnum dayEnum) {
        return dayEnum.todo();
    }

    public  String dayNew(DayEnumNew dayEnum) {
        return dayEnum.todo();
    }
}

package com.eaton.guan.cms.config;

/**
 * @Author : hyx
 * @CreateDate : 2024-01-01 23:13
 */
public enum DayEnum {


    one {
        @Override
        public String todo() {
            return "这个是一";
        }
    };

    public abstract String todo();
}

package com.eaton.guan.cms.config;

/**
 * @Author : hyx
 * @CreateDate : 2024-01-01 23:22
 */
public enum DayEnumNew {

    one("one",Type.one),
    two("one",Type.one);



    private final String value;
    private final Type type;

    DayEnumNew(String value, Type type) {
        this.value = value;
        this.type = type;
    }

    String todo(){
        return type.todo();
    };


    public enum Type {


        one{
            @Override
            public String todo() {
                return "这是一";
            }
        };

        public abstract String todo();
    }
}

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
枚举策略模式(Strategy Pattern)是行为设计模式的一种,它允许你定义一系列算法,并将每个算法封装在独立的类中,然后将它们作为参数传递给一个共同的接口或抽象类。在Java中,枚举类型非常适合用来实现策略模式,因为枚举可以提供有限且预定义的选项。 Java枚举策略模式的实现通常包括以下几个步骤: 1. **接口或抽象类**:定义一个策略接口或抽象类,包含具体执行操作的方法。例如: ```java public interface PaymentStrategy { void processPayment(double amount); } ``` 2. **枚举类**:为每种策略创建一个枚举类,继承自策略接口或实现抽象类,并实现具体方法。比如: ```java public enum PaymentMethod implements PaymentStrategy { CASH("Cash", amount -> System.out.println("Processing cash payment...")), DEBIT_CARD("Debit Card", amount -> System.out.println("Processing debit card payment...")); private String name; private Function<Double, Void> processPayment; PaymentMethod(String name, Function<Double, Void> processPayment) { this.name = name; this.processPayment = processPayment; } @Override public void processPayment(double amount) { processPayment.apply(amount); } public String getName() { return name; } } ``` 3. **客户端使用**:在需要使用策略的地方,可以创建枚举类型的实例并调用其方法: ```java public class PaymentProcessor { private PaymentStrategy strategy; public void setPaymentStrategy(PaymentStrategy strategy) { this.strategy = strategy; } public void processPayment(double amount) { strategy.processPayment(amount); } } PaymentProcessor processor = new PaymentProcessor(); processor.setPaymentStrategy(PaymentMethod.CASH); processor.processPayment(100.0); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值