9 changed files with 106 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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<String> sensitiveWords; |
|||
|
|||
public ConditionalConverter(List<String> 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<String> sensitiveWords) { |
|||
super(sensitiveWords); |
|||
} |
|||
|
|||
@Override |
|||
protected String doConvert(String data) { |
|||
return "*".repeat(data.length()); |
|||
} |
|||
} |
|||
|
|||
public static void main(String[] args) { |
|||
List<DataConverter> 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<String> sensitiveWords = Arrays.asList("敏感词", "测试"); |
|||
DataConverter conditionalConverter = new SensitiveMaskConverter(sensitiveWords); |
|||
String test1 = "普通数据"; |
|||
String test2 = "包含测试内容的数据"; |
|||
System.out.println("无敏感词数据转换结果:" + conditionalConverter.convert(test1)); |
|||
System.out.println("含敏感词数据转换结果:" + conditionalConverter.convert(test2)); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue