Simple Factory (简单工厂模式)

本文介绍简单工厂模式,一种创建型设计模式。通过示例代码详细解释了其组成角色:抽象产品、具体产品及工厂类,并展示了如何使用静态工厂方法创建不同实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  • 简单工厂模式不是23种设计模式之一,简单工厂模式属于 创建型模式
  • 又叫做 静态工厂方法(Static Factory Method)
  • 简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

 

角色:

 

   抽象产品角色(Product) :

          是所有对象的父类,它负责描述所有实例所共有的公共接口。

 

   具体产品角色(ConcreteProduct) :

          所有创建的对象都是充当这个角色的某个具体类的实例,实现了Product接口。

 

   工厂类角色(Creator) :

          简单工厂模式的核心,是创建所有实例的内部逻辑,可被外界直接访问(因为里面有一个静态方法),创建所需产品的对象。

 

 

代码实现:

 

1.Product.java

 

[java]  view plain copy
  1. package com.simplefactory ;  
  2.   
  3. // 定义一个抽象产品角色  
  4. public interface Product  
  5. {  
  6. }  

 

2.ConcreteProductA.java

 

[java]  view plain copy
  1. package com.simplefactory ;  
  2.   
  3. //具体产品角色A  
  4. public class ConcreteProductA implements Product  
  5. {  
  6. }  

 

3.ConcreteProductB.java

 

[java]  view plain copy
  1. package com.simplefactory ;  
  2.   
  3. //具体产品角色B  
  4. public class ConcreteProductB implements Product  
  5. {  
  6. }  

 

4.Creator.java

 

[java]  view plain copy
  1. package com.simplefactory ;  
  2.   
  3. //工厂类角色  
  4. public class Creator  
  5. {  
  6.     public static Product methodTest(String str)  
  7.     {  
  8.         if ("A".equals(str))  
  9.         {  
  10.             //这里可做好多事  
  11.             return new ConcreteProductA() ;  
  12.         }  
  13.   
  14.         else if ("B".equals(str))  
  15.         {  
  16.             return new ConcreteProductB() ;  
  17.         }  
  18.   
  19.         return null ;  
  20.     }  
  21. }  

5.Client.java

 

[java]  view plain copy
  1. package com.simplefactory ;  
  2.   
  3. public class Client   
  4. {  
  5.     public static void main(String[] args)  
  6.     {  
  7.         Product product = Creator.methodTest("A") ;  
  8.         System.out.println(product.getClass().getName()) ;  
  9.   
  10.         Product product2 = Creator.methodTest("B") ;  
  11.         System.out.println(product2.getClass().getName()) ;  
  12.     }  
  13. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值