使用map出去if else

本文介绍了一个使用Java实现的字符串操作工厂模式示例,通过该模式可以方便地为不同的字符串处理需求分配相应的处理操作,如转换为大写、小写、逆序及去除空白等。
import java.util.HashMap;
import java.util.Map;

public class Test {
	static Map<String, Operate> operates = new HashMap<String, Operate>();
	static {
		operates.put("upper", new UpperOperate());
		operates.put("lower", new LowerOperate());
		operates.put("reverse", new ReverseOperate());
		operates.put("removeBlank", new RemoveBlankOperate());
	}
	
	public static void main(String[] args) {
		String operateType = "removeBlank";
		String content = "Love coding!";
		
		Operate operate = operates.get(operateType);
		if (operate != null) {
			String result = operate.handle(content);
			System.out.println(result);
		}
	}
}

interface Operate {
	public String handle(String content);
}

/**
 * 大写操作
 */
class UpperOperate implements Operate {

	@Override
	public String handle(String content) {
		if (content == null) {
			return content;
		}
		return content.toUpperCase();
	}
	
}

/**
 * 小写操作
 */
class LowerOperate implements Operate {

	@Override
	public String handle(String content) {
		if (content == null) {
			return content;
		}
		return content.toLowerCase();
	}
	
}

/**
 * 逆序操作
 */
class ReverseOperate implements Operate {

	@Override
	public String handle(String content) {
		if (content == null) {
			return content;
		}
		return new StringBuffer(content).reverse().toString();
	}
	
}

/**
 * 去除空白操作
 */
class RemoveBlankOperate implements Operate {

	@Override
	public String handle(String content) {
		if (content == null) {
			return content;
		}
		return content.replaceAll("\\s*|\t|\r|\n", "");
	}
	
}

在 Vue 自定义组件的 `<script setup>` 中,`const userHandle = (rows: any[]) => {... }` 定义了一个名为 `userHandle` 的函数,该函数接收一个 `rows` 参数,类型为 `any[]`,即一个任意类型的数组。以下是该函数内部代码的详细解释: ```vue <template> <!-- 模板部分 --> </template> <script setup lang="ts" name="MaUserInput"> import { ref, watch } from 'vue' import { useRealNameListApi } from '@/api/sys/user' const props = defineProps({ multiple: { type: Boolean, required: false, default: false }, clearable: { type: Boolean, required: false, default: () => true }, disabled: { type: Boolean, required: false, default: () => false }, placeholder: { type: String, required: false, default: () => '' } }) const model = defineModel<any | any[]>() const visible = ref(false) const userName = ref() watch( () => model.value, async val => { if (val) { const idList = props.multiple ? val : [val] if (idList.length > 0) { const { data } = await useRealNameListApi(idList) userName.value = data.join(',') } } else { userName.value = '' } }, { immediate: true } ) const emit = defineEmits(['select']) const userHandle = (rows: any[]) => { if (props.multiple) { // 如果 props.multiple 为 true,表示支持多选 // 将 rows 数组中的每个元素的 id 属性提取出来,赋值给 model.value model.value = rows.map((item: any) => item.id) } else { // 如果 props.multiple 为 false,表示单选 // 取 rows 数组的第一个元素的 id 属性,赋值给 model.value model.value = rows[0].id } // 触发自定义事件 'select',并将 rows 数组作为参数传递出去 emit('select', rows) } </script> ``` `userHandle` 函数的主要作用是根据组件的 `multiple` 属性(通过 `props` 传入),处理用户选择的行数据 `rows`,并更新组件的 `model` 值,同时触发一个自定义事件 `select`。 ### 详细解释 1. **`if (props.multiple)` 条件判断**: - 如果 `props.multiple` 为 `true`,表示组件支持多选。此时,使用 `rows.map((item: any) => item.id)` 将 `rows` 数组中的每个元素的 `id` 属性提取出来,组成一个新的数组,并将其赋值给 `model.value`。 - 如果 `props.multiple` 为 `false`,表示组件只支持单选。此时,直接取 `rows` 数组的第一个元素的 `id` 属性,并将其赋值给 `model.value`。 2. **`emit('select', rows)`**: - 使用 `emit` 函数触发一个自定义事件 `select`,并将 `rows` 数组作为参数传递出去。这样,父组件就可以监听这个 `select` 事件,并在事件触发时执行相应的逻辑。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值