首页 > 数据库 > 数据库开发技术 > 工厂模式看这一篇文章就够了






1. 工厂模式(Factory Pattern)

定义:




特点:




示例:



// 产品接口public interface Animal {void speak();}// 具体产品:Dogpublic class Dog implements Animal {public void speak() {System.out.println("Woof!");}}// 具体产品:Catpublic class Cat implements Animal {public void speak() {System.out.println("Meow!");}}// 工厂类public class AnimalFactory {public Animal createAnimal(String type) {if (type.equals("dog")) {return new Dog();} else if (type.equals("cat")) {return new Cat();}return null;}}

public class Main {public static void main(String[] args) {AnimalFactory factory = new AnimalFactory();Animal dog = factory.createAnimal("dog");dog.speak(); // 输出: Woof!Animal cat = factory.createAnimal("cat");cat.speak(); // 输出: Meow!}}

2. 抽象工厂模式
(Abstract Factory Pattern)

定义:




特点:




示例:



// 抽象产品接口public interface Chair {void sitOn();}public interface Sofa {void lieOn();}// 具体产品:Modern Chairpublic class ModernChair implements Chair {public void sitOn() {System.out.println("Sitting on a modern chair.");}}// 具体产品:Modern Sofapublic class ModernSofa implements Sofa {public void lieOn() {System.out.println("Lying on a modern sofa.");}}// 具体产品:Classic Chairpublic class ClassicChair implements Chair {public void sitOn() {System.out.println("Sitting on a classic chair.");}}// 具体产品:Classic Sofapublic class ClassicSofa implements Sofa {public void lieOn() {System.out.println("Lying on a classic sofa.");}}// 抽象工厂接口public interface FurnitureFactory {Chair createChair();Sofa createSofa();}// 具体工厂:ModernFurnitureFactorypublic class ModernFurnitureFactory implements FurnitureFactory {public Chair createChair() {return new ModernChair();}public Sofa createSofa() {return new ModernSofa();}}// 具体工厂:ClassicFurnitureFactorypublic class ClassicFurnitureFactory implements FurnitureFactory {public Chair createChair() {return new ClassicChair();}public Sofa createSofa() {return new ClassicSofa();}}

public class Main {public static void main(String[] args) {FurnitureFactory factory = new ModernFurnitureFactory();Chair modernChair = factory.createChair();Sofa modernSofa = factory.createSofa();modernChair.sitOn(); // 输出: Sitting on a modern chair.modernSofa.lieOn(); // 输出: Lying on a modern sofa.factory = new ClassicFurnitureFactory();Chair classicChair = factory.createChair();Sofa classicSofa = factory.createSofa();classicChair.sitOn(); // 输出: Sitting on a classic chair.classicSofa.lieOn(); // 输出: Lying on a classic sofa.}}

3. 区别总结

特性 |
工厂模式(Factory Pattern) |
抽象工厂模式(Abstract Factory Pattern) |
|---|---|---|
目的 |
用于创建一个产品(对象)。 |
用于创建一系列相关或相互依赖的对象。 |
产品种类 |
创建单一产品对象。 |
创建一系列相关的产品对象。 |
复杂度 |
较简单,适合产品较少的情况。 |
较复杂,适合需要多个产品族(多个相关对象)时使用。 |
适用场景 |
当你需要根据条件创建不同类型的对象时使用。 |
当你需要创建一系列相关的对象(如不同风格的家具、操作系统等)时使用。 |
示例 |
AnimalFactory:根据动物类型创建不同动物对象。 |
FurnitureFactory:根据家具风格创建一系列的椅子和沙发对象。 |








END
原文作者:IT枫斗者;如有侵权,请联系管理员删除。