工厂模式是一种创建对象的方式,使得创建对象的过程与使用对象的过程分离。工厂模式分为三种类型:简单工厂模式、工厂方法模式和抽象工厂模式 。简单工厂模式是最常用的一种,它提供了一个创建对象的接口,但不允许客户端直接访问。而工厂方法模式则将对象的创建过程交给了子类来完成,这样就可以通过继承来实现代码的复用。抽象工厂模式则提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 。
在计算机科学中,设计模式是解决特定问题的优秀、可重用的解决方案,它们提供了一种在不修改代码的情况下添加新功能的方法,我们将讨论一种非常常见的设计模式——工厂模式。
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,而是通过使用一个共同的接口来指向新创建的对象。
工厂模式的主要优点是它可以将对象的创建延迟到真正需要它的时候,而不是在程序启动时就创建所有的对象,这可以大大减少内存的使用,并提高程序的性能,工厂模式还可以提供更好的封装性,因为我们可以在不改变客户端代码的情况下更改对象的创建逻辑。
工厂模式有两种主要的形式:简单工厂模式和工厂方法模式,简单工厂模式是最简单的形式,它只需要一个工厂类和一个静态方法来创建对象,而工厂方法模式则更加灵活,它允许我们根据传入的参数来决定应该创建哪种类型的对象。
下面是一个简单的工厂模式的例子:
public interface Shape { void draw(); } public class Circle implements Shape { @Override public void draw() { System.out.println("Inside Circle::draw() method."); } } public class Square implements Shape { @Override public void draw() { System.out.println("Inside Square::draw() method."); } } public class ShapeFactory { // Method to return shapes based on input public Shape getShape(String shapeType){ if(shapeType == null){ return null; } if(shapeType.equalsIgnoreCase("CIRCLE")){ return new Circle(); } else if(shapeType.equalsIgnoreCase("RECTANGLE")){ return new Square(); } return null; } }
在这个例子中,我们有一个接口Shape
,以及两个实现了这个接口的类Circle
和Square
,然后我们有一个ShapeFactory
类,它有一个getShape
方法,这个方法根据输入的字符串来返回相应的形状对象,这样,我们就可以在不知道具体形状的情况下创建形状对象了。