import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class DataConverterPipeline { interface DataConverter { String convert(String data); } static class TrimConverter implements DataConverter { @Override public String convert(String data) { if (data == null) return ""; return data.trim(); } } static class UpperCaseConverter implements DataConverter { @Override public String convert(String data) { if (data == null) return ""; return data.toUpperCase(); } } static class LowerCaseConverter implements DataConverter { @Override public String convert(String data) { if (data == null) return ""; return data.toLowerCase(); } } static class SensitiveWordConverter implements DataConverter { @Override public String convert(String data) { if (data == null) return ""; return data.replaceAll("敏感词|脏话", "***"); } } static abstract class ConditionalConverter implements DataConverter { private List sensitiveWords; public ConditionalConverter(List sensitiveWords) { this.sensitiveWords = sensitiveWords; } @Override public final String convert(String data) { if (data == null) return ""; if (containsSensitiveWord(data)) { return doConvert(data); } return data; } protected abstract String doConvert(String data); private boolean containsSensitiveWord(String data) { for (String word : sensitiveWords) { if (data.contains(word)) { return true; } } return false; } } static class SensitiveMaskConverter extends ConditionalConverter { public SensitiveMaskConverter(List sensitiveWords) { super(sensitiveWords); } @Override protected String doConvert(String data) { return "*".repeat(data.length()); } } public static void main(String[] args) { List pipeline = new ArrayList<>(Arrays.asList( new TrimConverter(), new UpperCaseConverter(), new SensitiveWordConverter() )); String rawData = " 这是一个测试数据,包含敏感词示例 "; System.out.println("原始数据:" + rawData); String result = rawData; for (DataConverter converter : pipeline) { result = converter.convert(result); System.out.println("经过" + converter.getClass().getSimpleName() + "转换后:" + result); } System.out.println("\n--- 条件转换器测试 ---"); List sensitiveWords = Arrays.asList("敏感词", "测试"); DataConverter conditionalConverter = new SensitiveMaskConverter(sensitiveWords); String test1 = "普通数据"; String test2 = "包含测试内容的数据"; System.out.println("无敏感词数据转换结果:" + conditionalConverter.convert(test1)); System.out.println("含敏感词数据转换结果:" + conditionalConverter.convert(test2)); } }