工厂方法模式——设计模式(二)

本文介绍工厂方法模式,一种创建型设计模式。通过定义创建对象的接口,并由子类决定实例化哪个类,使得添加新产品变得容易。文中给出了具体实现代码示例。

工厂方法模式

工厂模式是一种创建型模式,定义一个创建对象的接口,但让实现这个接口的子类来决定创建哪一个类,工厂模式让类的实例化过程延迟到子类进行。

工厂方法模式包含四个角色

  • Product:抽象产品,定义工厂方法所创建的对象的接口,也即是实际需要使用的对象的接口
  • ConcreteProduct:具体产品,具体的Product接口的实现对象
  • Factory:工厂接口,也可以叫Creater(创建者),申明工厂方法,通常返回一个Product类型的实例对象
  • ConcreteProduct:工厂实现,或者叫ConcreteCreater(创建器对象),覆盖Factory定义的工厂方法,返回具体的Product实例

UML图

https://gitee.com/country-fool/pic-repo/raw/master/images/image-20220120153046760.png

代码示例

 // 抽象产品
 public interface Product {
     String getProductName();
 }
 
 // 具体产品A
 public class ProductA implements Product {
     @Override
     public String getProductName(){
         return "ProductA";
     }
 }
 
 // 具体产品B
 public class ProductB implements Product {
     @Override
     public String getProductName() {
         return "ProductB";
     }
 }
 
 // 工厂接口
 public interface Factory {
     Porduct createProduct();
 }
 
 // 具体工厂A
 public FactoryA implements Factory {
     @Override
     public Product createProduct() {
         return new ProductA;
     }
 }
 
 // 具体工厂B
 public FactoryB implements Factory {
     @Override
     public Product createProduct() {
         return new ProductB;
     }
 }
 
 // 客户端调用
 public class Client {
     public static void main(String[] args) {
         Factory factory = new FactoryA();
         Product product = factory.createProduct();
         System.out.println(product.getProductName());

         factory = new FactoryB();
         product = factory.createProduct();
         System.out.println(product.getProductName());
     }
 }

当有新产品需要增加的时候,我们只需要新增一个产品和其对应的工厂就可以,而使用时候有不需要去关心产品的实际创建

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值