【创建型设计模式01】工厂设计模式java实例

工厂设计模式是一种常用的创建型设计模式,它通过定义一个工厂类来创建一组类似的对象。当我们需要创建大量类似对象时,可以使用工厂设计模式来避免重复的代码,并且提高代码的可重用性和可维护性。工厂方法模式有三种实现方式:简单工厂模式、工厂方法模式和抽象工厂模式。

下面是介绍三个Java实例以说明工厂设计模式的应用:

1. 简单工厂模式。简单工厂模式也称为静态工厂模式,它是工厂方法模式的一种特殊实现,通过一个静态方法来创建对象。在这种模式中,我们只需要传入需要的类的参数,即可获得一个实例对象。例如:

public class SimpleFactory {
    public static final int PRODUCT_A = 1;
    public static final int PRODUCT_B = 2;
    public static Product createProduct(int productId) {
        if(productId == PRODUCT_A) {
              return new ProductA();
        } else if(productId == PRODUCT_B) {
              return new ProductB();
        } else {
              return null;
        }
    }
}

public abstract class Product {
    public abstract void use();
}

public class ProductA extends Product {
    @Override
    public void use() {
        System.out.println("use ProductA");
    }
}

public class ProductB extends Product {
    @Override
    public void use() {
        System.out.println("use ProductB");
    }
}

//使用方法
Product product1 = SimpleFactory.createProduct(SimpleFactory.PRODUCT_A);
Product product2 = SimpleFactory.createProduct(SimpleFactory.PRODUCT_B);
product1.use();
product2.use();


2. 工厂方法模式。工厂方法模式将对象的创建过程抽象出来,将它交给子类来实现,从而实现了对象的多态性。例如:

public interface ProductFactory {
    public Product createProduct();
}

public class ProductAFactory implements ProductFactory {
    @Override
    public Product createProduct() {
        return new ProductA();
    }
}

public class ProductBFactory implements ProductFactory {
    @Override
    public Product createProduct() {
        return new ProductB();
    }
}

//使用方法
ProductFactory factory1 = new ProductAFactory();
ProductFactory factory2 = new ProductBFactory();
Product product1 = factory1.createProduct();
Product product2 = factory2.createProduct();
product1.use();
product2.use();


3. 抽象工厂模式。抽象工厂模式在工厂方法基础上增加了一层抽象,它将工厂类抽象出来,避免了直接使用具体工厂类的问题。例如:

public interface Factory {
    public Product1 createProduct1();
    public Product2 createProduct2();
}

public class FactoryA implements Factory {
    @Override
    public Product1 createProduct1() {
        return new Product1A();
    }
 
    @Override
    public Product2 createProduct2() {
        return new Product2A();
    }
}

public class FactoryB implements Factory {
    @Override
    public Product1 createProduct1() {
        return new Product1B();
    }

    @Override
    public Product2 createProduct2() {
        return new Product2B();
    }
}

public interface Product1 {
    public void use();
}

public class Product1A implements Product1 {
    @Override
    public void use() {
        System.out.println("use Product1A");
    }
}

public class Product1B implements Product1 {
    @Override
    public void use() {
        System.out.println("use Product1B");
    }
}

public interface Product2 {
    public void use();
}

public class Product2A implements Product2 {
    @Override
    public void use() {
        System.out.println("use Product2A");
    }
}

public class Product2B implements Product2 {
    @Override
    public void use() {
        System.out.println("use Product2B");
    }
}

//使用方法
Factory factory1 = new FactoryA();
Product1 product1 = factory1.createProduct1();
Product2 product2 = factory1.createProduct2();
product1.use();
product2.use();


以上三个实例使用了不同的工厂模式,它们都具有极高的可扩展性和可维护性,可以方便地添加新的产品或者新的工厂,从而实现更加复杂的应用场景。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值