《Java 工厂模式:从 “小白” 到 “大神” 的奇妙之旅》

185 阅读4分钟

嘿,各位 Java 大侠们!今天咱要来聊聊 Java 世界里超厉害的工厂模式。这就好比是在 Java 的江湖中,有一把神秘的武器,能让你的代码变得更加酷炫、高效。准备好了吗?让我们一起踏上工厂模式的奇妙之旅吧!

一、初级工厂模式:小试牛刀

想象一下,你正在打造一个游戏世界,里面有各种不同的角色。在没有工厂模式的时候,每次你想要创建一个新角色,都得手动去实例化这个角色类,就像在杂乱的工具箱里翻找特定的工具一样,麻烦得很。

但是有了初级工厂模式,那就不一样啦!初级工厂就像是一个小小的魔法工坊,你只需要告诉它你想要什么,它就会给你变出相应的角色。

比如,你有一个Shape接口,有Circle(圆形)和Rectangle(矩形)两个实现类。这时候,初级工厂就可以登场了。

interface Shape {
    void draw();
}
class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("画一个圆");
    }
}
class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("画一个矩形");
    }
}
class ShapeFactory {
    public Shape createShape(String shapeType) {
        if (shapeType.equalsIgnoreCase("circle")) {
            return new Circle();
        } else if (shapeType.equalsIgnoreCase("rectangle")) {
            return new Rectangle();
        } else {
            return null;
        }
    }
}

有了这个初级工厂,你想要画圆形或者矩形的时候,就可以轻松地调用工厂方法啦。

public class Main {
    public static void main(String[] args) {
        ShapeFactory factory = new ShapeFactory();
        Shape circle = factory.createShape("circle");
        circle.draw();
        Shape rectangle = factory.createShape("rectangle");
        rectangle.draw();
    }
}

初级工厂模式就像是你的第一个魔法小助手,虽然功能不是特别强大,但已经能让你的代码变得整洁不少啦!

二、中级工厂模式:渐入佳境

当你在 Java 的江湖中闯荡了一段时间后,初级工厂模式可能就不能满足你的需求了。这时候,中级工厂模式闪亮登场!

中级工厂模式就像是一个更高级的魔法工坊,它可以根据不同的条件,创建出更加复杂的对象。

比如说,我们现在有不同类型的汽车,有经济型汽车和豪华型汽车。每种汽车都有不同的配置和价格。

interface Car {
    void drive();
}
class EconomyCar implements Car {
    @Override
    public void drive() {
        System.out.println("开着经济型汽车,省钱又环保!");
    }
}
class LuxuryCar implements Car {
    @Override
    public void drive() {
        System.out.println("开着豪华型汽车,享受奢华之旅!");
    }
}
class CarFactory {
    public Car createCar(String carType) {
        if (carType.equalsIgnoreCase("economy")) {
            return new EconomyCar();
        } else if (carType.equalsIgnoreCase("luxury")) {
            return new LuxuryCar();
        } else {
            return null;
        }
    }
}

现在,如果你想要一辆汽车,只需要告诉工厂你想要的类型,工厂就会为你打造出一辆合适的汽车。

public class Main {
    public static void main(String[] args) {
        CarFactory factory = new CarFactory();
        Car economyCar = factory.createCar("economy");
        economyCar.drive();
        Car luxuryCar = factory.createCar("luxury");
        luxuryCar.drive();
    }
}

中级工厂模式让你的代码更加灵活,就像一个聪明的工匠,能够根据你的要求打造出各种不同的宝贝。

三、高级工厂模式:大神登场

当你成为 Java 江湖中的高手时,高级工厂模式就是你的终极武器啦!高级工厂模式就像是一个超级魔法工坊,它可以创建出更加复杂、更加灵活的对象。

比如说,我们现在有一个电子产品工厂,这个工厂可以生产手机、平板电脑和笔记本电脑。每种产品都有不同的品牌和型号。

interface ElectronicProduct {
    void use();
}
class Phone implements ElectronicProduct {
    @Override
    public void use() {
        System.out.println("用手机打电话、玩游戏!");
    }
}
class Tablet implements ElectronicProduct {
    @Override
    public void use() {
        System.out.println("用平板电脑看电影、阅读!");
    }
}
class Laptop implements ElectronicProduct {
    @Override
    public void use() {
        System.out.println("用笔记本电脑办公、学习!");
    }
}
abstract class ElectronicFactory {
    public abstract ElectronicProduct createProduct();
}
class PhoneFactory extends ElectronicFactory {
    @Override
    public ElectronicProduct createProduct() {
        return new Phone();
    }
}
class TabletFactory extends ElectronicFactory {
    @Override
    public ElectronicProduct createProduct() {
        return new Tablet();
    }
}
class LaptopFactory extends ElectronicFactory {
    @Override
    public ElectronicProduct createProduct() {
        return new Laptop();
    }
}

现在,如果你想要一个电子产品,只需要选择相应的工厂,工厂就会为你生产出你想要的产品。

public class Main {
    public static void main(String[] args) {
        ElectronicFactory phoneFactory = new PhoneFactory();
        ElectronicProduct phone = phoneFactory.createProduct();
        phone.use();
        ElectronicFactory tabletFactory = new TabletFactory();
        ElectronicProduct tablet = tabletFactory.createProduct();
        tablet.use();
        ElectronicFactory laptopFactory = new LaptopFactory();
        ElectronicProduct laptop = laptopFactory.createProduct();
        laptop.use();
    }
}

高级工厂模式就像是一个魔法大师,能够创造出各种神奇的东西。它让你的代码更加灵活、可维护,就像一个精心打造的城堡,坚不可摧。

好啦,各位 Java 大侠们,希望你们在 Java 的江湖中,好好运用工厂模式这把强大的武器,创造出更多精彩的代码世界!加油哦!