工厂模式和策略模式都是常见的设计模式,它们在软件设计中扮演着不同的角色,解决不同的问题。以下是它们的区别:
工厂模式(Factory Pattern):
策略模式(Strategy Pattern):
工厂模式:
策略模式:
工厂模式:
ShapeFactory
类负责创建不同类型的 Shape
对象(如 Circle
、Square
等)。策略模式:
CompressionStrategy
接口有不同的实现类如 ZipCompressionStrategy
和 RarCompressionStrategy
,客户端可以根据需要选择压缩策略。工厂模式:
策略模式:
工厂模式例子:
// 工厂类
public class ShapeFactory {
public Shape getShape(String shapeType) {
if (shapeType == null) {
return null;
}
if (shapeType.equalsIgnoreCase("CIRCLE")) {
return new Circle();
} else if (shapeType.equalsIgnoreCase("SQUARE")) {
return new Square();
}
return null;
}
}
策略模式例子:
// 策略接口
public interface PaymentStrategy {
void pay(int amount);
}
// 策略实现类
public class CreditCardPayment implements PaymentStrategy {
public void pay(int amount) {
System.out.println("Paid " + amount + " using Credit Card");
}
}
public class PayPalPayment implements PaymentStrategy {
public void pay(int amount) {
System.out.println("Paid " + amount + " using PayPal");
}
}
// 上下文类
public class ShoppingCart {
private PaymentStrategy paymentStrategy;
public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
this.paymentStrategy = paymentStrategy;
}
public void checkout(int amount) {
paymentStrategy.pay(amount);
}
}
这两种模式常常结合使用,例如在策略模式中使用工厂模式来创建不同的策略对象。