美文网首页Java高级进阶
Java设计模式从精通到入门四 简单工厂方法模式

Java设计模式从精通到入门四 简单工厂方法模式

作者: java菜 | 来源:发表于2019-01-18 11:17 被阅读1次

    简单工厂方法模式

    属于23中设计模式中创建型类型。

    核心思想:工厂提供创建对象的接口,由子类决定实例化哪一个子类。

    来源

    ​ 设计模式之禅中的例子,女娲造人,通过八卦炉来进行造人,没有烧熟的为白人,烧太熟的为黑人,刚好的为黄种人的例子进行程序展示

    女娲作为client,八卦炉为工厂类,人类为具体实现类,有皮肤的区别。

    UML类图

    图一

    Factory: 工厂类的接口,根据类类型,提供只能创建Human子类,或者子孙类的方法。

    HumanFactory: 工厂类的具体实现,通过反射获取该对象。

    Human: 提供获取人类皮肤的接口。

    WhiteHuman: Human的具体实现类

    BlackHuman: Human的具体实现类

    YellowHuman: Human的具体实现类

    核心代码

    Factory类:

    publicinterfaceFactory{/**    *@Authorouyangkang    *@Description提供返回人类比较具体的实例    *@Date10:04 2019/1/11    *@paramc    *@returnT    **/TgetInstance(Class< ? extends Human> c);}

    HumanFactory类:

    publicclassHumanFactoryimplementsFactory{/**    *@Authorouyangkang    *@Description实现    *@Date10:05 2019/1/11    *@paramc    *@returnT    **/@OverridepublicTgetInstance(Class<? extends Human> c){if(c !=null){try{return(T) c.newInstance();            }catch(InstantiationException e) {                e.printStackTrace();            }catch(IllegalAccessException e) {                e.printStackTrace();            }        }returnnull;    }}

    Human类:

    publicinterfaceHuman{/**    *@Authorouyangkang    *@Description获取人类皮肤颜色    *@Date10:05 2019/1/11    *@param*@returnvoid    **/voidgetColor();}

    WhiteHuman类:

    publicclassWhiteHumanimplementsHuman{@OverridepublicvoidgetColor(){        System.out.println("白色人种");    }}

    BlackHuman类:

    publicclassBlackHumanimplementsHuman{@OverridepublicvoidgetColor(){        System.out.println("黑色人种");    }}

    YellowHuman类

    publicclassYellowHumanimplementsHuman{@OverridepublicvoidgetColor(){        System.out.println("黄色人种");    }}

    Client类

    publicclassClient{publicstaticvoidmain(String[] args){        Factory factory =newHumanFactory();        Human instance = factory.getInstance(WhiteHuman.class);        instance.getColor();        factory.getInstance(BlackHuman.class).getColor();        factory.getInstance(YellowHuman.class).getColor();    }}

    输出结果:

    白色人种

    黑色人种

    黄色人种

    总结

    ​ 简单工厂方法是一个非常常见的设计模式。Spring中有他的影子。它属于创建型模式,工厂父类提供创建产品对象的接口,具体的工厂类实现该接口,并创建相应的对象。这样做的目的是将产品类的实例化操作延迟到工厂子类中完成。

    欢迎工作一到五年的Java工程师朋友们加入Java程序员开发: 854393687

    群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

    相关文章

      网友评论

        本文标题:Java设计模式从精通到入门四 简单工厂方法模式

        本文链接:https://www.haomeiwen.com/subject/kvogdqtx.html