工厂模式是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
