# Java 设计模式
# 单例模式(Singleton)
UML类图
+------------------------+ | Singleton | +------------------------+ | -instance: Singleton | | -Singleton() | | +getInstance() | +------------------------+
实现方式
- 饿汉式
public class EagerSingleton { private static final EagerSingleton instance = new EagerSingleton(); private EagerSingleton() {} public static EagerSingleton getInstance() { return instance; } }
- 懒汉式(线程安全)
public class LazySingleton { private static LazySingleton instance; private LazySingleton() {} public static synchronized LazySingleton getInstance() { if (instance == null) { instance = new LazySingleton(); } return instance; } }
- 双重检查锁定
public class DoubleCheckedSingleton { private static volatile DoubleCheckedSingleton instance; private DoubleCheckedSingleton() {} public static DoubleCheckedSingleton getInstance() { if (instance == null) { synchronized (DoubleCheckedSingleton.class) { if (instance == null) { instance = new DoubleCheckedSingleton(); } } } return instance; } }
- 静态内部类
public class StaticInnerSingleton { private StaticInnerSingleton() {} private static class SingletonHolder { private static final StaticInnerSingleton INSTANCE = new StaticInnerSingleton(); } public static StaticInnerSingleton getInstance() { return SingletonHolder.INSTANCE; } }
- 枚举
public enum EnumSingleton { INSTANCE; private EnumSingleton() {} public void doSomething() { // 业务方法 } }
最佳实践
- 线程安全考虑
// 推荐使用静态内部类或枚举实现 // 静态内部类实现延迟加载,且保证线程安全 // 枚举实现最简单,自动处理序列化
- 序列化问题
public class SerializableSingleton implements Serializable { private static final long serialVersionUID = 1L; private static final SerializableSingleton instance = new SerializableSingleton(); private SerializableSingleton() {} public static SerializableSingleton getInstance() { return instance; } // 防止序列化破坏单例 protected Object readResolve() { return instance; } }
- 反射攻击防护
public class ReflectionSafeSingleton { private static final ReflectionSafeSingleton instance = new ReflectionSafeSingleton(); private ReflectionSafeSingleton() { if (instance != null) { throw new IllegalStateException("单例已存在,不能通过反射创建新实例"); } } public static ReflectionSafeSingleton getInstance() { return instance; } }
Spring框架中的应用
@Configuration public class SingletonBeanConfig { @Bean @Scope("singleton") // 默认就是单例 public MyService myService() { return new MyService(); } }
# 工厂模式
简单工厂
+------------------+ +------------------+ | SimpleFactory | | Product | +------------------+ +------------------+ | +createProduct() |------>| +operation() | +------------------+ +------------------+ ^ | +------------------+ | ConcreteProduct | +------------------+ | +operation() | +------------------+
// 产品接口 interface Product { void operation(); } // 具体产品 class ConcreteProductA implements Product { public void operation() { System.out.println("ConcreteProductA"); } } class ConcreteProductB implements Product { public void operation() { System.out.println("ConcreteProductB"); } } // 简单工厂 class SimpleFactory { public static Product createProduct(String type) { switch (type) { case "A": return new ConcreteProductA(); case "B": return new ConcreteProductB(); default: throw new IllegalArgumentException("Unknown product type"); } } }
工厂方法
+------------------+ +------------------+ | Factory | | Product | +------------------+ +------------------+ | +createProduct() | | +operation() | +------------------+ +------------------+ ^ | ^ | | +------------------+ +------------------+ | ConcreteFactory | | ConcreteProduct | +------------------+ +------------------+ | +createProduct() | | +operation() | +------------------+ +------------------+
// 产品接口 interface Product { void operation(); } // 具体产品 class ConcreteProductA implements Product { public void operation() { System.out.println("ConcreteProductA"); } } class ConcreteProductB implements Product { public void operation() { System.out.println("ConcreteProductB"); } } // 工厂接口 interface Factory { Product createProduct(); } // 具体工厂 class ConcreteFactoryA implements Factory { public Product createProduct() { return new ConcreteProductA(); } } class ConcreteFactoryB implements Factory { public Product createProduct() { return new ConcreteProductB(); } }
抽象工厂
+-------------------+ +------------------+ | AbstractFactory | | ProductA | +-------------------+ +------------------+ | +createProductA() |----->| +operation() | | +createProductB() | +------------------+ +-------------------+ ^ ^ | +------------------+ | | ConcreteProductA | +-------------------+ +------------------+ | ConcreteFactory1 | | +operation() | +-------------------+ +------------------+ | +createProductA() | | +createProductB() | +------------------+ +-------------------+ | ProductB | +------------------+ | +operation() | +------------------+ ^ | +------------------+ | ConcreteProductB | +------------------+ | +operation() | +------------------+
// 产品族A interface ProductA { void operationA(); } class ConcreteProductA1 implements ProductA { public void operationA() { System.out.println("ConcreteProductA1"); } } class ConcreteProductA2 implements ProductA { public void operationA() { System.out.println("ConcreteProductA2"); } } // 产品族B interface ProductB { void operationB(); } class ConcreteProductB1 implements ProductB { public void operationB() { System.out.println("ConcreteProductB1"); } } class ConcreteProductB2 implements ProductB { public void operationB() { System.out.println("ConcreteProductB2"); } } // 抽象工厂 interface AbstractFactory { ProductA createProductA(); ProductB createProductB(); } // 具体工厂1 class ConcreteFactory1 implements AbstractFactory { public ProductA createProductA() { return new ConcreteProductA1(); } public ProductB createProductB() { return new ConcreteProductB1(); } } // 具体工厂2 class ConcreteFactory2 implements AbstractFactory { public ProductA createProductA() { return new ConcreteProductA2(); } public ProductB createProductB() { return new ConcreteProductB2(); } }
Spring框架中的应用
// BeanFactory作为工厂模式的典型应用 @Configuration public class FactoryConfig { @Bean public ProductService productService() { // 根据配置创建不同的产品服务实现 return new ConcreteProductService(); } @Bean public AbstractFactory abstractFactory() { // 根据条件选择不同的工厂实现 return new ConcreteFactory1(); } }
# 观察者模式(Observer)
UML类图
+------------------+ +------------------+ | Subject | | Observer | +------------------+ +------------------+ | -observers |<>---->| +update() | | +attach() | +------------------+ | +detach() | ^ | +notify() | | +------------------+ +------------------+ ^ | |ConcreteObserver | +------------------+ +------------------+ |ConcreteSubject | | +update() | +------------------+ +------------------+ | +getState() | | +setState() | +------------------+
基本实现
// 观察者接口 interface Observer { void update(String message); } // 具体观察者 class ConcreteObserver implements Observer { private String name; public ConcreteObserver(String name) { this.name = name; } @Override public void update(String message) { System.out.println(name + "收到通知:" + message); } } // 主题 class Subject { private List<Observer> observers = new ArrayList<>(); private String state; public void attach(Observer observer) { observers.add(observer); } public void detach(Observer observer) { observers.remove(observer); } public void setState(String state) { this.state = state; notifyObservers(); } private void notifyObservers() { for (Observer observer : observers) { observer.update(state); } } }
Spring事件机制
// 自定义事件 public class UserCreatedEvent extends ApplicationEvent { private User user; public UserCreatedEvent(Object source, User user) { super(source); this.user = user; } public User getUser() { return user; } } // 事件发布者 @Service public class UserService { @Autowired private ApplicationEventPublisher eventPublisher; public void createUser(User user) { // 保存用户 userRepository.save(user); // 发布事件 eventPublisher.publishEvent(new UserCreatedEvent(this, user)); } } // 事件监听者 @Component public class UserEventListener { @EventListener public void handleUserCreatedEvent(UserCreatedEvent event) { User user = event.getUser(); // 处理用户创建事件 System.out.println("新用户创建:" + user.getUsername()); } }
# 设计模式应用场景
创建型模式
- 单例模式:配置管理、连接池
- 工厂模式:日志记录器、数据库连接
- 建造者模式:复杂对象构建
结构型模式
- 适配器:第三方库集成
- 装饰器:动态添加功能
- 代理:权限控制、缓存
行为型模式
- 策略:支付方式选择
- 观察者:事件处理
- 责任链:请求处理流程
# 反模式与优化
常见反模式
- 过度工程化
- 模式滥用
- 违反SOLID原则
优化建议
- 保持简单原则
- 合理抽象
- 考虑扩展性
- 注重可测试性
# 实际项目应用
Web应用架构
- MVC模式
- 前端控制器
- 视图组合器
微服务架构
- 服务注册与发现
- 断路器模式
- 网关模式
企业应用集成
- 适配器模式
- 外观模式
- 代理模式
# 建造者模式(Builder)
UML类图
+------------------+ +------------------+ | Product | | Builder | +------------------+ +------------------+ | -partA: String |<------|+buildPartA() | | -partB: String | |+buildPartB() | | -partC: String | |+getResult() | +------------------+ +------------------+ ^ | +------------------+ |ConcreteBuilder | +------------------+ |+buildPartA() | |+buildPartB() | |+getResult() | +------------------+
实现示例
// 产品类 class Computer { private String cpu; private String memory; private String disk; private String gpu; public void setCpu(String cpu) { this.cpu = cpu; } public void setMemory(String memory) { this.memory = memory; } public void setDisk(String disk) { this.disk = disk; } public void setGpu(String gpu) { this.gpu = gpu; } @Override public String toString() { return String.format("Computer[cpu=%s, memory=%s, disk=%s, gpu=%s]", cpu, memory, disk, gpu); } } // 抽象建造者 interface ComputerBuilder { ComputerBuilder buildCpu(String cpu); ComputerBuilder buildMemory(String memory); ComputerBuilder buildDisk(String disk); ComputerBuilder buildGpu(String gpu); Computer build(); } // 具体建造者 class GamingComputerBuilder implements ComputerBuilder { private Computer computer = new Computer(); public ComputerBuilder buildCpu(String cpu) { computer.setCpu(cpu); return this; } public ComputerBuilder buildMemory(String memory) { computer.setMemory(memory); return this; } public ComputerBuilder buildDisk(String disk) { computer.setDisk(disk); return this; } public ComputerBuilder buildGpu(String gpu) { computer.setGpu(gpu); return this; } public Computer build() { return computer; } } // 指挥者 class Director { private ComputerBuilder builder; public Director(ComputerBuilder builder) { this.builder = builder; } public Computer constructGamingComputer() { return builder.buildCpu("Intel i9") .buildMemory("32GB") .buildDisk("2TB SSD") .buildGpu("RTX 4090") .build(); } }
Lombok实现
@Builder @Data public class User { private String username; private String password; private String email; private String phone; } // 使用示例 User user = User.builder() .username("john_doe") .password("secure123") .email("john@example.com") .phone("+1234567890") .build();
Spring框架中的应用
// UriComponentsBuilder示例 UriComponents uriComponents = UriComponentsBuilder.newInstance() .scheme("https") .host("api.example.com") .path("/users/{id}") .queryParam("format", "json") .buildAndExpand(42) .encode(); // RestTemplateBuilder示例 @Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate(RestTemplateBuilder builder) { return builder .setConnectTimeout(Duration.ofSeconds(5)) .setReadTimeout(Duration.ofSeconds(5)) .basicAuthentication("user", "password") .build(); } }
# 装饰器模式(Decorator)
UML类图
+------------------+ | Component | +------------------+ | +operation() | +------------------+ ^ | +------------------+ +------------------+ |ConcreteComponent | | Decorator | +------------------+ +------------------+ | +operation() | | -component | +------------------+ | +operation() | +------------------+ ^ | +------------------+ |ConcreteDecorator | +------------------+ | +operation() | | +addedBehavior() | +------------------+
基本实现
// 组件接口 interface Component { void operation(); } // 具体组件 class ConcreteComponent implements Component { @Override public void operation() { System.out.println("具体组件的操作"); } } // 装饰器抽象类 abstract class Decorator implements Component { protected Component component; public Decorator(Component component) { this.component = component; } @Override public void operation() { component.operation(); } } // 具体装饰器A class ConcreteDecoratorA extends Decorator { public ConcreteDecoratorA(Component component) { super(component); } @Override public void operation() { super.operation(); addedBehavior(); } private void addedBehavior() { System.out.println("装饰器A的附加功能"); } } // 具体装饰器B class ConcreteDecoratorB extends Decorator { public ConcreteDecoratorB(Component component) { super(component); } @Override public void operation() { super.operation(); addedBehavior(); } private void addedBehavior() { System.out.println("装饰器B的附加功能"); } }
IO流装饰器示例
// 使用Java IO中的装饰器模式 try (InputStream in = new BufferedInputStream( new FileInputStream("file.txt"))) { // BufferedInputStream装饰FileInputStream byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = in.read(buffer)) != -1) { // 处理数据 } }
Spring框架中的应用
// Spring中的缓存装饰器 @Configuration @EnableCaching public class CacheConfig { @Bean public CacheManager cacheManager() { return new ConcurrentMapCacheManager(); } } @Service public class UserService { @Cacheable("users") // 使用缓存装饰器 public User getUser(String id) { // 从数据库获取用户 return userRepository.findById(id); } } // Spring Security中的过滤器装饰器 @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.addFilterBefore(new CustomFilter(), UsernamePasswordAuthenticationFilter.class) .authorizeRequests() .anyRequest().authenticated(); } }
对象适配器实现
// 对象适配器 class ObjectAdapter implements Target { private Adaptee adaptee; public ObjectAdapter(Adaptee adaptee) { this.adaptee = adaptee; } @Override public void request() { adaptee.specificRequest(); } }
Spring框架中的应用
// Spring MVC中的HandlerAdapter public interface HandlerAdapter { boolean supports(Object handler); ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception; } // 适配不同类型的Handler @Component public class SimpleControllerHandlerAdapter implements HandlerAdapter { @Override public boolean supports(Object handler) { return handler instanceof Controller; } @Override public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return ((Controller) handler).handleRequest(request, response); } } // 使用示例 @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void configureHandlerAdapters(List<HandlerAdapter> adapters) { adapters.add(new SimpleControllerHandlerAdapter()); } }
# 代理模式(Proxy)
UML类图
+------------------+ | Subject | +------------------+ | +request() | +------------------+ ^ | +------------------+ +------------------+ | Proxy |------>| RealSubject | +------------------+ +------------------+ | -realSubject | | +request() | | +request() | +------------------+ +------------------+
静态代理实现
// 主题接口 interface Subject { void request(); } // 真实主题 class RealSubject implements Subject { @Override public void request() { System.out.println("RealSubject处理请求"); } } // 代理类 class Proxy implements Subject { private RealSubject realSubject; public Proxy() { this.realSubject = new RealSubject(); } @Override public void request() { before(); realSubject.request(); after(); } private void before() { System.out.println("在请求之前做一些事情"); } private void after() { System.out.println("在请求之后做一些事情"); } }
JDK动态代理
import java.lang.reflect.Proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; // 动态代理处理器 class DynamicProxyHandler implements InvocationHandler { private Object target; public DynamicProxyHandler(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { before(); Object result = method.invoke(target, args); after(); return result; } private void before() { System.out.println("动态代理 - 前置处理"); } private void after() { System.out.println("动态代理 - 后置处理"); } } // 使用示例 public class DynamicProxyDemo { public static void main(String[] args) { Subject realSubject = new RealSubject(); InvocationHandler handler = new DynamicProxyHandler(realSubject); Subject proxy = (Subject) Proxy.newProxyInstance( realSubject.getClass().getClassLoader(), realSubject.getClass().getInterfaces(), handler ); proxy.request(); } }
CGLIB动态代理
import org.springframework.cglib.proxy.Enhancer; import org.springframework.cglib.proxy.MethodInterceptor; import org.springframework.cglib.proxy.MethodProxy; // CGLIB代理处理器 class CglibProxyInterceptor implements MethodInterceptor { @Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { before(); Object result = proxy.invokeSuper(obj, args); after(); return result; } private void before() { System.out.println("CGLIB代理 - 前置处理"); } private void after() { System.out.println("CGLIB代理 - 后置处理"); } } // 使用示例 public class CglibProxyDemo { public static void main(String[] args) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(RealSubject.class); enhancer.setCallback(new CglibProxyInterceptor()); RealSubject proxy = (RealSubject) enhancer.create(); proxy.request(); } }
Spring AOP中的应用
@Aspect @Component public class LoggingAspect { @Around("execution(* com.example.service.*.*(..))") public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { String methodName = joinPoint.getSignature().getName(); // 前置处理 System.out.println("开始执行方法: " + methodName); try { // 执行目标方法 Object result = joinPoint.proceed(); // 返回处理 System.out.println("方法执行完成: " + methodName); return result; } catch (Exception e) { // 异常处理 System.out.println("方法执行异常: " + methodName); throw e; } } } // 使用示例 @Service public class UserService { @Transactional // 事务代理 public void updateUser(User user) { // 业务逻辑 } }
# 策略模式(Strategy)
- UML类图
+------------------+ +------------------+ | Context | | Strategy | +------------------+ +------------------+ | -strategy |------>| +execute() | | +executeStrategy| +------------------+ +------------------+ ^ | +------------------+ |ConcreteStrategy | +------------------+ | +execute() | +------------------+
# 模板方法模式(Template Method)
UML类图
+------------------+ | AbstractClass | +------------------+ | +templateMethod()| | #primitiveOp1() | | #primitiveOp2() | +------------------+ ^ | +------------------+ | ConcreteClass | +------------------+ | #primitiveOp1() | | #primitiveOp2() | +------------------+
基本实现
// 抽象类 abstract class AbstractClass { // 模板方法 public final void templateMethod() { primitiveOperation1(); primitiveOperation2(); hook(); } // 基本操作1 protected abstract void primitiveOperation1(); // 基本操作2 protected abstract void primitiveOperation2(); // 钩子方法 protected void hook() { // 默认实现 } } // 具体类 class ConcreteClass extends AbstractClass { @Override protected void primitiveOperation1() { System.out.println("具体类实现操作1"); } @Override protected void primitiveOperation2() { System.out.println("具体类实现操作2"); } @Override protected void hook() { System.out.println("具体类实现钩子方法"); } }
Spring框架中的应用
// JdbcTemplate示例 @Repository public class UserDao extends JdbcDaoSupport { public User findById(long id) { return getJdbcTemplate().queryForObject( "SELECT * FROM users WHERE id = ?", new Object[]{id}, (rs, rowNum) -> { User user = new User(); user.setId(rs.getLong("id")); user.setUsername(rs.getString("username")); return user; } ); } } // RestTemplate示例 @Service public class UserService { @Autowired private RestTemplate restTemplate; public User getUser(String id) { return restTemplate.getForObject( "http://api.example.com/users/{id}", User.class, id ); } } // TransactionTemplate示例 @Service public class TransactionService { @Autowired private TransactionTemplate transactionTemplate; public void transferMoney(String fromAccount, String toAccount, BigDecimal amount) { transactionTemplate.execute(new TransactionCallback<Void>() { @Override public Void doInTransaction(TransactionStatus status) { try { // 转账操作 accountDao.debit(fromAccount, amount); accountDao.credit(toAccount, amount); return null; } catch (Exception e) { status.setRollbackOnly(); throw e; } } }); } }
基本实现
// 策略接口 interface PaymentStrategy { void pay(int amount); } // 具体策略:信用卡支付 class CreditCardPayment implements PaymentStrategy { private String cardNumber; private String cvv; public CreditCardPayment(String cardNumber, String cvv) { this.cardNumber = cardNumber; this.cvv = cvv; } @Override public void pay(int amount) { System.out.println("使用信用卡支付:" + amount); } } // 具体策略:支付宝支付 class AlipayPayment implements PaymentStrategy { private String email; public AlipayPayment(String email) { this.email = email; } @Override public void pay(int amount) { System.out.println("使用支付宝支付:" + amount); } } // 上下文 class PaymentContext { private PaymentStrategy strategy; public void setStrategy(PaymentStrategy strategy) { this.strategy = strategy; } public void executePayment(int amount) { strategy.pay(amount); } }
Spring框架中的应用
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies; public ValidationService(Map<String, ValidationStrategy> strategies) { this.strategies = strategies; } public boolean validateText(String text, String strategyName) { ValidationStrategy strategy = strategies.get(strategyName); if (strategy == null) { throw new IllegalArgumentException("未知的验证策略"); } return strategy.validate(text); } } // 配置类 @Configuration public class ValidationConfig { @Bean public ValidationService validationService( Map<String, ValidationStrategy> strategies) { return new ValidationService(strategies); } }
// 策略接口 public interface ValidationStrategy { boolean validate(String text); } // 具体策略实现 @Component("lowerCase") public class LowerCaseValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("[a-z]+"); } } @Component("numeric") public class NumericValidationStrategy implements ValidationStrategy { @Override public boolean validate(String text) { return text.matches("\\d+"); } } // 使用策略的服务 @Service public class ValidationService { private final Map<String, ValidationStrategy> strategies
← Java 性能调优 Java内存管理问题 →