diff --git a/w6/DataConverterPipeline$ConditionalConverter.class b/w6/DataConverterPipeline$ConditionalConverter.class new file mode 100644 index 0000000..d8857fb Binary files /dev/null and b/w6/DataConverterPipeline$ConditionalConverter.class differ diff --git a/w6/DataConverterPipeline$DataConverter.class b/w6/DataConverterPipeline$DataConverter.class new file mode 100644 index 0000000..ddd906a Binary files /dev/null and b/w6/DataConverterPipeline$DataConverter.class differ diff --git a/w6/DataConverterPipeline$LowerCaseConverter.class b/w6/DataConverterPipeline$LowerCaseConverter.class new file mode 100644 index 0000000..6c9a97d Binary files /dev/null and b/w6/DataConverterPipeline$LowerCaseConverter.class differ diff --git a/w6/DataConverterPipeline$SensitiveMaskConverter.class b/w6/DataConverterPipeline$SensitiveMaskConverter.class new file mode 100644 index 0000000..7d7a6f9 Binary files /dev/null and b/w6/DataConverterPipeline$SensitiveMaskConverter.class differ diff --git a/w6/DataConverterPipeline$SensitiveWordConverter.class b/w6/DataConverterPipeline$SensitiveWordConverter.class new file mode 100644 index 0000000..0392a6a Binary files /dev/null and b/w6/DataConverterPipeline$SensitiveWordConverter.class differ diff --git a/w6/DataConverterPipeline$TrimConverter.class b/w6/DataConverterPipeline$TrimConverter.class new file mode 100644 index 0000000..d0c5614 Binary files /dev/null and b/w6/DataConverterPipeline$TrimConverter.class differ diff --git a/w6/DataConverterPipeline$UpperCaseConverter.class b/w6/DataConverterPipeline$UpperCaseConverter.class new file mode 100644 index 0000000..a93913a Binary files /dev/null and b/w6/DataConverterPipeline$UpperCaseConverter.class differ diff --git a/w6/DataConverterPipeline.class b/w6/DataConverterPipeline.class new file mode 100644 index 0000000..35c9a36 Binary files /dev/null and b/w6/DataConverterPipeline.class differ diff --git a/w6/DataConverterPipeline.java b/w6/DataConverterPipeline.java new file mode 100644 index 0000000..bfb0433 --- /dev/null +++ b/w6/DataConverterPipeline.java @@ -0,0 +1,106 @@ +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)); + } +}