设计模式面试题, 什么是策略模式?一般用在什么场景?
设计模式面试题, 什么是策略模式?一般用在什么场景?
QA
Step 1
Q:: 什么是策略模式?
A:: 策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以互换使用。策略模式让算法独立于使用它的客户端而变化。换句话说,策略模式可以在运行时改变对象的行为,而无需修改客户端的代码。通常通过将一系列算法封装在一组策略类中,然后通过上下文对象根据需要选择不同的策略来实现。
Step 2
Q:: 策略模式一般用在什么场景?
A:: 策略模式通常用于以下场景:1. 多个类仅在行为上有不同,使用策略模式可以避免使用大量的条件语句。2. 需要在不同时间点进行行为切换时,如根据用户的不同输入使用不同的策略。3.
系统需要动态地在几种算法之间切换,比如在电商系统中,不同的促销策略(如打折、满减等)可能会根据不同条件应用。
Step 3
Q:: 策略模式的优点和缺点是什么?
A:: 策略模式的优点包括:1. 符合开闭原则,扩展性好,能够灵活地新增或删除算法。2. 避免了使用大量的条件判断语句,提高了代码的可读性和可维护性。3. 策略可以复用,降低重复代码。缺点包括:1. 增加了系统中类的数量,可能导致系统复杂度提高。2.
所有策略都需要暴露出去,因此策略的选择过程对客户端可见,不够封装。
Step 4
Q:: 策略模式与工厂模式有什么区别?
A:: 策略模式和工厂模式都属于行为型设计模式,但它们的用途和实现方式不同。策略模式主要用于替代条件判断语句,根据不同条件使用不同的策略;而工厂模式则是用于创建对象,它通过工厂方法来实例化不同类型的对象。策略模式更注重的是行为的变化,而工厂模式关注的是对象的创建过程。
Step 5
Q:: 如何在代码中实现策略模式?
A:: 在代码中实现策略模式通常包括以下步骤:1. 创建一个策略接口,定义所有策略类必须实现的方法。2. 创建具体的策略类,实现策略接口中定义的算法。3. 创建上下文类,它持有一个策略对象,并在执行时调用策略对象的方法。4.
在客户端代码中,通过上下文类选择并调用合适的策略。这样做可以使客户端代码更为简洁,且支持动态更换策略。