《大话设计模式》—— 读后感(8)雷锋依然在人间——工厂方法模式

本文深入探讨了工厂方法模式的定义、与简单工厂模式的区别,以及如何在代码中实现和应用这一模式。通过示例代码展示如何通过子工厂创建对象,避免了简单工厂模式中的代码耦合问题,体现了开放封闭原则的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。(摘抄)


工厂方法模式和简单工厂模式都是用于去创建新的类,但是工厂方法模式传承了简单工厂模式封装对象创建的过程,同时也改掉了简单工厂模式违背开放——封闭原则的缺点。

简单工厂模式,如果需要生产/去掉一个子类的话,那么需要在SimpleFactory类中修改 switch case 语句,所以违背了开放——封闭原则。

工厂方法创建对象是通过子工厂来创建,所以添加或删除子类的话是不需要改变原有的代码的。

class Factory
{
	public Product create() {
		// TODO Auto-generated method stub
		return null;
	}
}

class AFactory extends Factory
{
	public Product create() {
		// TODO Auto-generated method stub
		return new AProduct();
	}
}

class BFactory extends Factory
{
	public Product create() {
		// TODO Auto-generated method stub
		return new BProduct();
	}
}

class Product
{
	public void domethod() {
		// TODO Auto-generated method stub

	}
}

class AProduct extends Product
{
	public void domethod() {
		// TODO Auto-generated method stub

	}
}

class BProduct extends Product
{
	public void domethod() {
		// TODO Auto-generated method stub

	}
}
//新增类
class CFactory extends Factory
{
	public Product create()
	{
		return new CProduct();
	}
}

class CProduct extends Product
{
	public void domethod()
	{
		
	}
}
public static void main()
{
	Factory factory = new AFactory();
	Product product = factory.create();
	product.domethod();
	//新增一个类的话,那么只需要添加,而不需要修改原有代码,因为生产类的判断交给了客户端
	factory = new CFactory();
	Product newP = factory.create();
	newP.domethod();
}




工厂方法模式差不多也就这样,还是那句话实际使用中必须活学活用,多种模式结合出来的四不像模式,也许才是正确的使用方法。。。

话说《大话》的例子越来越扯了。。。感觉解释还是蛮清楚,就是例子有点蛋疼,但是我也还蛮佩服作者,这样子也可以圆过来。。。


好希望自己把这本书看完之后,可以去看下那本Gof写的原版的设计模式,正好提升一下英文水平

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值