工厂模式是Java中常用的一种设计模式,它可以帮助我们更好地管理对象的创建过程。本文将详解Java中的工厂模式,包括简单工厂、工厂方法和抽象工厂,同时提供易于编程小白阅读学习的代码案例。
简单工厂模式是工厂模式的一种,它通过一个工厂类,根据传入的参数来创建不同的产品类实例。具体代码实现如下:
public interface Product { void show(); } public class ConcreteProduct1 implements Product { @Override public void show() { System.out.println("这是产品1"); } } public class ConcreteProduct2 implements Product { @Override public void show() { System.out.println("这是产品2"); } } public class SimpleFactory { public static Product createProduct(int type) { if (type == 1) { return new ConcreteProduct1(); } else if (type == 2) { return new ConcreteProduct2(); } return null; } }
以上代码中,Product为产品接口,ConcreteProduct1和ConcreteProduct2为具体产品类,SimpleFactory为简单工厂类,其中createProduct方法根据传入参数type的不同返回不同的产品实例。
工厂方法模式是指定义一个用于创建对象的接口,让子类决定将哪一个类实例化。具体代码实现如下:
public interface Product { void show(); } public class ConcreteProduct1 implements Product { @Override public void show() { System.out.println("这是产品1"); } } public class ConcreteProduct2 implements Product { @Override public void show() { System.out.println("这是产品2"); } } public interface Factory { Product createProduct(); } public class ConcreteFactory1 implements Factory { @Override public Product createProduct() { return new ConcreteProduct1(); } } public class ConcreteFactory2 implements Factory { @Override public Product createProduct() { return new ConcreteProduct2(); } }
以上代码中,Product为产品接口,ConcreteProduct1和ConcreteProduct2为具体产品类,Factory为工厂接口,ConcreteFactory1和ConcreteFactory2为具体工厂类,其中createProduct方法根据不同的工厂实现返回不同的产品实例。
抽象工厂模式是指提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。具体代码实现如下:
public interface ProductA { void show(); } public class ConcreteProductA1 implements ProductA { @Override public void show() { System.out.println("这是A1产品"); } } public class ConcreteProductA2 implements ProductA { @Override public void show() { System.out.println("这是A2产品"); } } public interface ProductB { void show(); } public class ConcreteProductB1 implements ProductB { @Override public void show() { System.out.println("这是B1产品"); } } public class ConcreteProductB2 implements ProductB { @Override public void show() { System.out.println("这是B2产品"); } } public interface Factory { ProductA createProductA(); ProductB createProductB(); } public class ConcreteFactory1 implements Factory { @Override public ProductA createProductA() { return new ConcreteProductA1(); } @Override public ProductB createProductB() { return new ConcreteProductB1(); } } public class ConcreteFactory2 implements Factory { @Override public ProductA createProductA() { return new ConcreteProductA2(); } @Override public ProductB createProductB() { return new ConcreteProductB2(); } }
以上代码中,ProductA和ProductB为产品接口,ConcreteProductA1、ConcreteProductA2、ConcreteProductB1和ConcreteProductB2为具体产品类,Factory为工厂接口,ConcreteFactory1和ConcreteFactory2为具体工厂类,其中createProductA和createProductB方法分别返回不同的产品实例。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com