浅谈工厂模式与策略模式

  Java   7分钟   246浏览   0评论

你好呀,我是小邹。

引言

设计模式是软件工程中一种常见的解决方案模板,用于解决特定类型的问题。在Java编程中,设计模式不仅可以提高代码的可读性和可维护性,还能增强系统的灵活性和扩展性。本文将重点探讨工厂模式和策略模式,这两种模式在实际开发中极为常见,能够有效地处理对象创建和算法封装的问题。

工厂模式:灵活的对象创建

工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建产品对象而不必指定具体类,而是使用一个共同的接口。工厂模式把对象的创建封装在一个独立的工厂类中,这样做的好处是可以随时添加新的产品类,而不需要修改现有代码。

实现步骤:
  1. 定义一个接口:这是所有产品类的父接口,它描述了产品对象的通用接口。
  2. 创建产品类:实现上述接口,每个产品类代表一个具体的产品。
  3. 创建工厂类:工厂类包含一个静态方法,该方法根据传入的参数返回一个产品对象。
示例代码:
// 定义接口
interface Shape {
    void draw();
}

// 具体产品类
class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a circle");
    }
}

class Square implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a square");
    }
}

// 工厂类
class ShapeFactory {
    public static 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 class FactoryPatternDemo {
    public static void main(String[] args) {
        Shape shape1 = ShapeFactory.getShape("CIRCLE");
        shape1.draw();

        Shape shape2 = ShapeFactory.getShape("SQUARE");
        shape2.draw();
    }
}

策略模式:封装算法的可替换性

策略模式是一种行为型设计模式,它使你能在运行时改变对象的行为。在策略模式中,算法本身被封装在自己的类中,这些类可以相互替换,就像不同的策略一样。

实现步骤:
  1. 定义策略接口:定义所有支持的算法的公共接口。
  2. 创建策略类:实现策略接口,每个策略类都提供了一个具体的算法实现。
  3. 使用策略:定义一个上下文类,它使用策略接口进行操作。
示例代码:
// 定义策略接口
interface PaymentStrategy {
    void pay(int amount);
}

// 具体策略类
class CreditCardStrategy implements PaymentStrategy {
    @Override
    public void pay(int amount) {
        System.out.println(amount + " paid with credit/debit card");
    }
}

class PayPalStrategy implements PaymentStrategy {
    @Override
    public void pay(int amount) {
        System.out.println(amount + " paid using PayPal.");
    }
}

// 上下文类
class ShoppingCart {
    private List<Item> items;
    private PaymentStrategy paymentStrategy;

    public ShoppingCart(PaymentStrategy paymentStrategy){
        this.paymentStrategy = paymentStrategy;
        items = new ArrayList<Item>();
    }

    public void checkout(int amount) {
        paymentStrategy.pay(amount);
    }
}

// 客户端代码
public class StrategyPatternDemo {
    public static void main(String[] args) {
        ShoppingCart cart = new ShoppingCart(new CreditCardStrategy());
        cart.checkout(200);

        cart = new ShoppingCart(new PayPalStrategy());
        cart.checkout(200);
    }
}

结论

工厂模式和策略模式都是Java设计模式中非常实用的部分。工厂模式提供了一种创建对象的灵活方式,而策略模式则允许在运行时更改对象的行为。理解并熟练应用这些模式,将有助于开发出更加模块化、可扩展和易于维护的软件系统。

如果你觉得文章对你有帮助,那就请作者喝杯咖啡吧☕
微信
支付宝
  0 条评论