设计模式5 - 工厂方法模式【Factory Method Pattern】

简介: 设计模式5 - 工厂方法模式【Factory Method Pattern】

工厂方法模式

定义:

定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。

例子(女娲造人):

类图:

代码:

public class HumanFactory { 
    //定义一个MAP,初始化过的Human对象都放在这里
    private static HashMap<String,Human> humans = new HashMap<String,Human>(); 
    //定一个烤箱,泥巴塞进去,人就出来,这个太先进了
    public static Human createHuman(Class c){ 
         Human human=null; //定义一个类型的人类
         try { 
             //如果MAP中有,则直接从取出,不用初始化了
             if(humans.containsKey(c.getSimpleName())){ 
                 human = humans.get(c.getSimpleName()); 
             }else{ 
                 human = (Human)Class.forName(c.getName()).newInstance(); 
                 //放到MAP中
                 humans.put(c.getSimpleName(), human); 
             } 
     } catch (InstantiationException e) {
         //你要是不说个人类颜色的话,没法烤,要白的黑,你说话了才好烤
         System.out.println("必须指定人类的颜色"); 
    } catch (IllegalAccessException e) { 
         //一定定义的人类有问题,那就烤不出来了,这是...
         System.out.println("人类定义错误!"); 
    } catch (ClassNotFoundException e) {
          //你随便说个人类,我到哪里给你制造去?!
         System.out.println("混蛋,你指定的人类找不到!"); 
    } 
    return human; 
 } 
} 

总结:

HumanFatcory是一个工厂,主要用来生产人类,当高层代码需要获取人类时,直接从工厂获取。同时这里使用了延迟初始化,一个对象初始化完毕后就不释放,等到再次用到得就不用再次初始化了,直接从内存过中拿到就可以。

目录
相关文章
|
19天前
|
设计模式 SQL 算法
设计模式了解哪些,模版模式
设计模式了解哪些,模版模式
19 0
|
1月前
|
设计模式 Java uml
C++设计模式之 依赖注入模式探索
C++设计模式之 依赖注入模式探索
37 0
|
2月前
|
设计模式 前端开发 JavaScript
观察者模式 vs 发布-订阅模式:两种设计模式的对决!
欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚开始学习前端的读者们打造的。无论你是初学者还是有一些基础的开发者,我们都会在这里为你提供一个系统而又亲切的学习平台。我们以问答形式更新,为大家呈现精选的前端知识点和最佳实践。通过深入浅出的解释概念,并提供实际案例和练习,让你逐步建立起一个扎实的基础。无论是HTML、CSS、JavaScript还是最新的前端框架和工具,我们都将为你提供丰富的内容和实用技巧,帮助你更好地理解并运用前端开发中的各种技术。
|
15天前
|
设计模式 Java 数据库
小谈设计模式(2)—简单工厂模式
小谈设计模式(2)—简单工厂模式
|
4天前
|
设计模式 存储 JavaScript
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
|
4天前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
|
5天前
|
设计模式
设计模式(一)简单工厂模式
设计模式(一)简单工厂模式
13 0
|
13天前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
16 1
|
15天前
|
设计模式 Java
小谈设计模式(9)—工厂方法模式
小谈设计模式(9)—工厂方法模式
|
1月前
|
设计模式 编译器
解析器模式--设计模式
解析器模式--设计模式
19 0