java if else如何修改为设计模式进行处理呢?
下文笔者讲述if else过长-如何修改为更优雅的代码实现呢?下文将一一道来,如下所示:
实现思路: 使用map ,接口 ,工厂类即可简化if else代码例: 具有相同业务的if else改写 原代码
if (sort =="银行卡") { System.out.println("我是银行卡支付!"); }else if (sort =="微信") { System.out.println("我是微信支付!"); }else { System.out.println("无支付方式"); }修改后的代码
package com.java265.other; import java.util.HashMap; import java.util.Map; public class Test16 { /** * java265.com 示例程序 数组转集合 * * @throws Exception */ public static void main(String[] args) throws Exception { PaySort paySort = PayFactory.getPaySortService("微信"); if (null != paySort) { paySort.pay(); } PaySort paySort1 = PayFactory.getPaySortService("信"); if (null != paySort1) { paySort1.pay(); } PaySort paySort2 = PayFactory.getPaySortService("银行卡"); if (null != paySort2) { paySort2.pay(); } } } abstract class PaySort { protected void pay() { throw new UnsupportedOperationException("无可用的支付方式"); } } class WeixinPay extends PaySort { @Override public void pay(){ System.out.println("我是微信支付!"); } } class BankCardPay extends PaySort { @Override public void pay() { System.out.println("我是银行卡支付!"); } } class PayFactory{ static Map<String, PaySort> map = new HashMap<>(); static { map.put("微信", new WeixinPay()); map.put("银行卡", new BankCardPay()); } public static PaySort getPaySortService(String payName) { return map.get(payName); } } ------运行以上代码,将输出以下信息----- 我是微信支付! 我是银行卡支付!
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。