java if else如何修改为设计模式进行处理呢?

java-教程王 Java经验 发布时间:2023-05-21 21:27:39 阅读数:19935 1
下文笔者讲述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);
	}

}

------运行以上代码,将输出以下信息-----
我是微信支付!
我是银行卡支付!
 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202204/16500395952890.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者