抽象工厂方法 java_java工厂模式之工厂方法模式,抽象工厂模式

上篇说道java的简单工厂模式,随着业务的复杂和需求的变化,简单的工厂模式已经不能满足我们的需求。

工厂方法模式就是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。例如上一篇的例子中调用者既不输入man也不输入women或者传递的字符串出错就不能正确的创建对象。而多个工厂方法模式是提供多个工厂方法,分别创建对象。将对象的创建交由父类中定义的一个标准方法来完成,而不是其构造函数,究竟应该创建何种对象由具体的子类负责决定。

将之前的代码稍作修改,创建一个human接口。

422ff14e659f311feb1e2f14bc1f8142.png

创建男人女人对human工厂的实现

c17ea3a3b8b2e2540954e4477b50ff74.png

3712cac12c43641ed5d001f0c389b5e4.png

测试

3d36ccf6a99f7f257409ccc2e5642175.png

输出

37ff6bb75238b88c8649538a18448b12.png

总结:工厂方法模式是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。工厂方法模式可以允许很多具体工厂类从抽象工厂类中将创建行为继承下来,从而可以成为多个简单工厂模式的综合,进而推广了简单工厂模式。

抽象工厂模式

抽象工厂模式可以说是简单工厂模式的扩展,它们主要的区别在于需要创建对象的复杂程度上。

定义吃饭接口:

21ec590ec1375a4153a312829f069d97.png

定义具体的产品类的实现:

3cd6d0584345361ca53b334226948652.png

0afa3ef7734f288f9167ef981e39fd1c.png

定义好抽象的工厂接口:

70c8dc9490b6c6323b4d4af2cc4119c8.png

定义具体的工厂生产类,具体的实力返回

d27aa93143095dd3d54296c50e534cd1.png

2495bef373e9840b3ab5188da216e8cf.png

测试:

e43f7b2db08549c1b704a789860fb108.png

输出:

e05cee8d7efd5f57fa96d60386a4b618.png

总结:抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,创建多个产品族中的产品对象。这就是抽象工厂模式的用意。 一般常常使用于一套程序,需要多套实现的场景之下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值