顾乔芝士网

持续更新的前后端开发技术栈

Java设计模式深度解读:工厂模式与策略模式

Java设计模式深度解读:工厂模式与策略模式

工厂模式:像不像你小时候捏橡皮泥?

假设你有一盒五颜六色的橡皮泥,每次你想捏一个动物的时候,都要自己动手揉捏各种形状,是不是很麻烦?工厂模式就是这个“橡皮泥制作工坊”的概念,它负责根据不同的需求,生产出相应的产品。



工厂模式的结构

想象一下,工坊里有一位经验丰富的师傅,他可以根据顾客的要求,从工具箱里拿出合适的模具,然后快速制作出符合要求的橡皮泥动物。这就是工厂模式的核心:抽象工厂类具体产品类

// 抽象产品类
public interface Animal {
    void display();
}

// 具体产品类
public class Lion implements Animal {
    public void display() {
        System.out.println("我是狮子!");
    }
}

public class Elephant implements Animal {
    public void display() {
        System.out.println("我是大象!");
    }
}

// 工厂类
public class AnimalFactory {
    public static Animal getAnimal(String type) {
        if (type.equalsIgnoreCase("Lion")) {
            return new Lion();
        } else if (type.equalsIgnoreCase("Elephant")) {
            return new Elephant();
        }
        return null;
    }
}

在这个例子中,AnimalFactory 就像是那个聪明的师傅,根据顾客的要求,选择正确的模具来生产动物。



策略模式:换衣服的游戏

现在让我们玩个换衣服的游戏。如果你有几套不同风格的衣服,比如一套休闲装,一套运动装,一套正装,你可以根据场合随意更换。策略模式就是这个“换衣服”的机制。

策略模式的结构

在这个游戏中,每套衣服就是一个策略,你可以随时切换不同的策略。策略模式的核心在于定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。

// 抽象策略类
public interface WearStrategy {
    void wear();
}

// 具体策略类
public class CasualWear implements WearStrategy {
    public void wear() {
        System.out.println("我穿上了休闲装!");
    }
}

public class SportWear implements WearStrategy {
    public void wear() {
        System.out.println("我换上了运动装!");
    }
}

public class FormalWear implements WearStrategy {
    public void wear() {
        System.out.println("我现在穿着正装!");
    }
}

// 上下文类
public class Context {
    private WearStrategy wearStrategy;

    public void setWearStrategy(WearStrategy wearStrategy) {
        this.wearStrategy = wearStrategy;
    }

    public void executeWear() {
        wearStrategy.wear();
    }
}

在这里,Context 类就像是那个能随时帮你换衣服的人,而 WearStrategy 就是你衣柜里的各种衣服。

工厂模式与策略模式的区别

虽然两者都涉及到创建对象的过程,但它们的目的和使用场景完全不同。

  • 工厂模式关注的是对象的创建,通过工厂类统一管理对象的创建过程。
  • 策略模式则更关注行为的封装,通过不同的策略实现不同的行为逻辑。

简单来说,工厂模式是在生产相同类型的不同产品,而策略模式是在同一类型的产品上执行不同的操作。

希望这篇文章能让大家对工厂模式和策略模式有更深的理解,记住,编程就像捏橡皮泥和换衣服一样有趣!


控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言