关闭

工厂方法模式

标签: 工厂模式
68人阅读 评论(0) 收藏 举报
分类:

对于工厂模式,第三方框架用的比较多,懂的比较少,更别提自己去造了。为先初步理解下工厂方法模式,等以后有个更深刻认识再来更。

简单工厂模式就是造一个工厂接口,造一个产品接口,产生不同的具体实现类产品,然后用利用实现类工厂去生产产品,用户无需关心产品的生产过程,只在意最后拿到的产品即可。

书中以女娲造人为例,这里也拿这个好了。

首先定义我们要造的人的接口。

public interface Human{
    //产品的逻辑实现
    void getColor();
    void getLanguage();
}

定义几个具体实现的子类

//白人
public class WhiteMan implements Human{
    public void getColor(){
        System.out.println("我是白色人种");
    }

    public void getLanguage(){
        System.out.println("我讲英语");
    }
}
//黄种人
public class YellowMan implements Human{
    public void getColor(){
        System.out.println("我是黄种人");
    }
    public void getLanguage(){
        System.out.println("我讲汉语");
    }
}

生产产品的工厂

public calss abstract Facory{
    public abstract <T extends Human> T createHuman(Class<T> clz);  
}

具体的工厂类

public class HumanFacory extends Factory{
    Human human=null;
    try{
        human=(T)Class.forName(cla.getName()).newInstance();
    }catch(Exception e){
        System.out.println("生产错误");
        }
    }
    return (T)human;
}

工厂模式目前我所理解的最大功能是做到解耦,把具体产品类和工厂类分开,有利于代码的扩展,我即使再增加一个具体实现类,工厂类基本上也无需更改,
用户只需告诉工厂我要生产什么,那么就可以拿到什么,具体的生产过程与用户无关。

对于工厂方法模式,最简单是是简单工厂模式,即静态工厂模式:

public class HumanFactory{
    public static <T extends Human> T careatHuman(Class<T> c){
        Human human=null;
        try{
            human=(Human)Class.forName(c.getName()).newInstance();
        }catch(Exception e){
            System.out.println("生产错误);
        }
    }
}

还有升级为多个工厂类,替代单例模式与延迟初始化,目前水平不够,无法理解那么多,暂时对于工厂模式的好处也没有体会。只能分析到这里。学习是个无止境的过程。。。

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2002次
    • 积分:173
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条