JAVA中工厂设计模式的uml图,Java设计模式从精通到入门四 简单工厂方法模式

简单工厂方法模式

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

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

来源

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

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

UML类图

8d8909fff0feddc506cc866fe45de819.png

图一

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

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

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

WhiteHuman: Human的具体实现类

BlackHuman: Human的具体实现类

YellowHuman: Human的具体实现类

核心代码

Factory类:

public interface Factory {

/**

* @Author ouyangkang

* @Description 提供返回人类比较具体的实例

* @Date 10:04 2019/1/11

* @param c

* @return T

**/

T getInstance(Class< ? extends Human> c);

}

HumanFactory类:

public class HumanFactory implements Factory {

/**

* @Author ouyangkang

* @Description 实现

* @Date 10:05 2019/1/11

* @param c

* @return T

**/

@Override

public T getInstance(Class extends Human> c) {

if (c != null){

try {

return (T) c.newInstance();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

}

return null;

}

}

Human类:

public interface Human {

/**

* @Author ouyangkang

* @Description 获取人类皮肤颜色

* @Date 10:05 2019/1/11

* @param

* @return void

**/

void getColor();

}

WhiteHuman类:

public class WhiteHuman implements Human {

@Override

public void getColor() {

System.out.println("白色人种");

}

}

BlackHuman类:

public class BlackHuman implements Human {

@Override

public void getColor() {

System.out.println("黑色人种");

}

}

YellowHuman类

public class YellowHuman implements Human {

@Override

public void getColor() {

System.out.println("黄色人种");

}

}

Client类

public class Client {

public static void main(String[] args) {

Factory factory = new HumanFactory();

Human instance = factory.getInstance(WhiteHuman.class);

instance.getColor();

factory.getInstance(BlackHuman.class).getColor();

factory.getInstance(YellowHuman.class).getColor();

}

}

输出结果:

白色人种

黑色人种

黄色人种

总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值