博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Simple Factory (简单工厂模式)
阅读量:5141 次
发布时间:2019-06-13

本文共 1275 字,大约阅读时间需要 4 分钟。


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

 

角色:

 

   抽象产品角色(Product) :

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

 

   具体产品角色(ConcreteProduct) :

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

 

   工厂类角色(Creator) :

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

 

 

代码实现:

 

1.Product.java

 

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

 

2.ConcreteProductA.java

 

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

 

3.ConcreteProductB.java

 

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

 

4.Creator.java

 

[java]
  
  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]
  
  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. }  

转载于:https://www.cnblogs.com/hoobey/p/5294408.html

你可能感兴趣的文章
js编写时间选择框
查看>>
PHP压缩文件操作
查看>>
Java数据结构和算法(四)--链表
查看>>
JIRA
查看>>
小技巧——直接在目录中输入cmd然后就打开cmd命令窗口
查看>>
深浅拷贝(十四)
查看>>
由级别和性格特征将程序员分类 ---看看你属于哪一种
查看>>
HDU 6370(并查集)
查看>>
BZOJ 1207(dp)
查看>>
PE知识复习之PE的导入表
查看>>
HDU 2076 夹角有多大(题目已修改,注意读题)
查看>>
洛谷P3676 小清新数据结构题(动态点分治)
查看>>
九校联考-DL24凉心模拟Day2T1 锻造(forging)
查看>>
洛谷 P3237 [HNOI2014]米特运输
查看>>
Attributes.Add用途与用法
查看>>
JavaScript面向对象初探——封装和继承
查看>>
L2-001 紧急救援 (dijkstra+dfs回溯路径)
查看>>
javascript 无限分类
查看>>
spring IOC装配Bean(注解方式)
查看>>
[面试算法题]有序列表删除节点-leetcode学习之旅(4)
查看>>