java中的设计模式有哪些?

提问者:帅平 问题分类:面试刷题
java中的设计模式有哪些?
7 个回答
满意答案
午后的阳光让人昏沉
午后的阳光让人昏沉
答案被隐藏
查看该答案需要支付 2 积分
登录账号
发布于:3个月前 (02-08) IP属地:四川省
满天都是派星べ
满天都是派星べ
责任链设计模式:
责任链模式使多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。
优点:降低耦合度,增加程序的灵活性。
缺点:可能会导致性能问题,因为每个请求都可能遍历整个链。
使用场景:有多个对象可以处理同一个请求,但是处理者不确定。
实现方式:定义一个处理请求的接口,以及一系列继承自该接口的处理者类。每个处理者类都有一个指向下一个处理者的引用。
发布于:1个月前 (03-21) IP属地:四川省
自愈
自愈
示例代码:
public interface Handler {
    void setNext(Handler next);
    void handleRequest(Request request);
}
@Component
public class ConcreteHandler1 implements Handler {
    private Handler next;
    @Override
    public void setNext(Handler next) {
        this.next = next;
    }
    @Override
    public void handleRequest(Request request) {
        if (request.getType() == RequestType.TYPE1) {
            System.out.println("ConcreteHandler1 handles request.");
        } else if (next != null) {
            next.handleRequest(request);
        }
    }
}
// 其他处理器类似...
@Configuration
public class HandlerConfig {
    @Autowired
    public void configureHandlers(ConcreteHandler1 handler1, ConcreteHandler2 handler2) {
        handler1.setNext(handler2);
    }
}
发布于:1个月前 (03-21) IP属地:四川省
候你多时
候你多时
策略设计模式:
策略模式允许你定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法的变化独立于使用算法的客户。
优点:算法可以自由切换,避免了硬编码带来的问题。
缺点:客户端需要知道所有的策略类。
使用场景:多个相关类只因行为不同而不同;需要在运行时改变对象的行为。
实现方式:定义一个策略接口,然后为每个具体策略创建一个实现了该接口的类。
发布于:1个月前 (03-21) IP属地:四川省
♀如此美
♀如此美
示例代码:
public interface PaymentStrategy {
    void pay(int amount);
}
@Component
public class CreditCardStrategy implements PaymentStrategy {
    @Override
    public void pay(int amount) {
        System.out.println(amount + " paid with credit/debit card");
    }
}
@Component
public class PayPalStrategy implements PaymentStrategy {
    @Override
    public void pay(int amount) {
        System.out.println(amount + " paid using Paypal.");
    }
}
// 使用@Autowired注入具体的策略
@Service
public class ShoppingCart {
    private final PaymentStrategy paymentStrategy;
    @Autowired
    public ShoppingCart(PaymentStrategy paymentStrategy) {
        this.paymentStrategy = paymentStrategy;
    }
    public void checkout(int amount) {
        paymentStrategy.pay(amount);
    }
}
发布于:1个月前 (03-21) IP属地:四川省
肺少女
肺少女
工厂设计模式:
工厂模式是一种创建型设计模式,它提供了一种接口来创建对象,但由子类决定实例化哪一个类。工厂方法让类的实例化推迟到子类。
优点:提高了代码的灵活性和可扩展性。
缺点:增加了系统的复杂度。
使用场景:当一个类不知道它所必须创建的对象的类的时候;当一个类希望它的子类来指定它所创建的对象的时候等。
实现方式:定义一个创建对象的接口(可以是一个抽象类),让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到了子类。
发布于:1个月前 (03-21) IP属地:四川省
时光静好べ与君语
时光静好べ与君语
示例代码:
public interface MessageService {
    void sendMessage(String msg, String rec);
}
@Component
public class EmailService implements MessageService {
    @Override
    public void sendMessage(String msg, String rec) {
        System.out.println("Email sent to " + rec + " with Message=" + msg);
    }
}
@Component
public class SMSService implements MessageService {
    @Override
    public void sendMessage(String msg, String rec) {
        System.out.println("SMS sent to " + rec + " with Message=" + msg);
    }
}
@Configuration
public class AppConfig {
    @Bean
    public MessageService messageService() {
        return new EmailService(); // 可以根据条件选择不同的实现
    }
}
发布于:1个月前 (03-21) IP属地:四川省
我来回答