
深入理解Java工厂模式的三种实现方式
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,将对象的创建过程与使用过程分离,能够帮助我们解耦代码,提高代码的可维护性和可扩展性。在Java中,工厂模式有着广泛的应用。本文将介绍Java工厂模式的三种实现方式,并提供具体的代码示例。
简单工厂模式又称为静态工厂模式,通过一个工厂类,根据不同的参数创建不同的实例对象。它包含三个角色:工厂类、抽象产品类和具体产品类。
下面是一个简单工厂模式的示例代码:
立即学习“Java免费学习笔记(深入)”;
// 抽象产品类
interface Product {
void print();
}
// 具体产品类A
class ProductA implements Product {
@Override
public void print() {
System.out.println("Product A");
}
}
// 具体产品类B
class ProductB implements Product {
@Override
public void print() {
System.out.println("Product B");
}
}
// 工厂类
class SimpleFactory {
public static Product createProduct(String type) {
if (type.equals("A")) {
return new ProductA();
} else if (type.equals("B")) {
return new ProductB();
} else {
throw new IllegalArgumentException("Invalid product type.");
}
}
}
// 测试代码
public class Main {
public static void main(String[] args) {
Product productA = SimpleFactory.createProduct("A");
productA.print(); // 输出:Product A
Product productB = SimpleFactory.createProduct("B");
productB.print(); // 输出:Product B
}
}以上代码中,抽象产品类Product定义了一个打印方法,具体产品类ProductA和ProductB实现了该方法。工厂类SimpleFactory通过静态方法createProduct根据传入的参数类型创建对应的产品对象。
工厂方法模式也称为工厂模式,它把工厂类的创建产品的逻辑分发到各个具体的工厂子类中。它包含四个角色:抽象工厂类、具体工厂类、抽象产品类和具体产品类。
本系统是一个基于工厂模式的三层架构项目,基于VS2005 开发,结构简洁,配合动软Codematic代码生成器,可以使开发效率事半功倍,倍感轻松。本系统主要功能 1,物品类别管理 实现了物品类别的添加、修改、删除功能,方便库存物品分类管理。 2,物品管理 实现物品添加、修改,管理员可实时对物品做出库、入库记录,也可查看详细历史出入库记录。 3,商家管理 实现商家添加、修改、删除功能,方便公司和客户
0
下面是一个工厂方法模式的示例代码:
// 抽象产品类
interface Product {
void print();
}
// 具体产品类A
class ProductA implements Product {
@Override
public void print() {
System.out.println("Product A");
}
}
// 具体产品类B
class ProductB implements Product {
@Override
public void print() {
System.out.println("Product B");
}
}
// 抽象工厂类
interface Factory {
Product createProduct();
}
// 具体工厂类A
class FactoryA implements Factory {
@Override
public Product createProduct() {
return new ProductA();
}
}
// 具体工厂类B
class FactoryB implements Factory {
@Override
public Product createProduct() {
return new ProductB();
}
}
// 测试代码
public class Main {
public static void main(String[] args) {
Factory factoryA = new FactoryA();
Product productA = factoryA.createProduct();
productA.print(); // 输出:Product A
Factory factoryB = new FactoryB();
Product productB = factoryB.createProduct();
productB.print(); // 输出:Product B
}
}以上代码中,抽象产品类Product定义了一个打印方法,具体产品类ProductA和ProductB实现了该方法。抽象工厂类Factory定义了一个创建产品的抽象方法,具体工厂类FactoryA和FactoryB分别实现了该方法,创建对应的产品对象。
抽象工厂模式是工厂方法模式的扩展,它由多个抽象产品类、多个具体产品类、一个抽象工厂类和多个具体工厂类组成。它提供了一种创建一族相关或相互依赖对象的最佳方式。
下面是一个抽象工厂模式的示例代码:
// 抽象产品类A
interface ProductA {
void print();
}
// 具体产品A1
class ProductA1 implements ProductA {
@Override
public void print() {
System.out.println("Product A1");
}
}
// 具体产品A2
class ProductA2 implements ProductA {
@Override
public void print() {
System.out.println("Product A2");
}
}
// 抽象产品类B
interface ProductB {
void print();
}
// 具体产品B1
class ProductB1 implements ProductB {
@Override
public void print() {
System.out.println("Product B1");
}
}
// 具体产品B2
class ProductB2 implements ProductB {
@Override
public void print() {
System.out.println("Product B2");
}
}
// 抽象工厂类
interface AbstractFactory {
ProductA createProductA();
ProductB createProductB();
}
// 具体工厂类1
class ConcreteFactory1 implements AbstractFactory {
@Override
public ProductA createProductA() {
return new ProductA1();
}
@Override
public ProductB createProductB() {
return new ProductB1();
}
}
// 具体工厂类2
class ConcreteFactory2 implements AbstractFactory {
@Override
public ProductA createProductA() {
return new ProductA2();
}
@Override
public ProductB createProductB() {
return new ProductB2();
}
}
// 测试代码
public class Main {
public static void main(String[] args) {
AbstractFactory factory1 = new ConcreteFactory1();
ProductA productA1 = factory1.createProductA();
productA1.print(); // 输出:Product A1
ProductB productB1 = factory1.createProductB();
productB1.print(); // 输出:Product B1
AbstractFactory factory2 = new ConcreteFactory2();
ProductA productA2 = factory2.createProductA();
productA2.print(); // 输出:Product A2
ProductB productB2 = factory2.createProductB();
productB2.print(); // 输出:Product B2
}
}以上代码中,抽象产品类ProductA和ProductB分别定义了一个打印方法,具体产品类ProductA1、ProductA2、ProductB1和ProductB2实现了该方法。抽象工厂类AbstractFactory定义了两个创建产品的抽象方法,具体工厂类ConcreteFactory1和ConcreteFactory2分别实现了这两个方法,创建对应的产品对象。
通过以上三种实现方式的代码示例,我们可以更深入地理解Java工厂模式的应用和实现方式。根据不同的场景和需求,选择适合的工厂模式可以帮助我们提高代码的可维护性和可扩展性,从而使我们的代码更加灵活和易于维护。
以上就是深入理解Java工厂模式的三种实现方式的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号