工厂方法模式

本文介绍了工厂方法模式的概念,对比了简单工厂模式与工厂方法模式的区别,通过示例代码展示了如何使用这两种模式来创建对象,实现创建过程的解耦。

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

工厂方法模式:定义一个创建对象的接口,让子类决定实例化哪一个类

工厂模式有点:

1.将对象的创建进行封装,实现细节的隐藏,高层调用者不用关心创建的具体的产品类,只了解产品类的抽象,具体产品类的创建是由工厂进行决定。使调用者和产品的创建进行解耦。

 

标准类图:



一、 简单工厂模式(不需要抽象工厂)

产品抽象类:

public interface Product {

	String getInfo();
	
}

 具体产品类:

public class Iphone implements Product {

	@Override
	public String getInfo() {
		return "this is the iphone";
	}

}

 

public class Ipod implements Product{

	@Override
	public String getInfo() {
		return "this is the ipod";
	}

}

 场景类:

public class Client {

	public static void main(String[] args) throws Exception{
		Factory factory = new Factory();
		Product product = factory.createProduct(Ipod.class.getName());
		System.out.println(product.getInfo());
	}
	
}

 

二,工厂方法模式(抽象出工厂,每个具体的工厂声场不同的产品)

产品类没有任何变化。

工厂类进行修改:

public interface AbstractFactory {
	
	Product createProduct();
	
}
public class IphoneFactory implements AbstractFactory{

	@Override
	public Product createProduct() {
		return new Iphone();
	}

}

 

public class IpodFactory implements AbstractFactory{

	@Override
	public Product createProduct() {
		return new Ipod();
	}

}

 场景类:

public class Client {

	public static void main(String[] args) throws Exception{
		AbstractFactory iphoneFactory = new IphoneFactory();
		AbstractFactory ipodFactory = new IpodFactory();
		Product iphone = iphoneFactory.createProduct();
		Product ipod = ipodFactory.createProduct();
		System.out.println(iphone.getInfo());
		System.out.println(ipod.getInfo());
	}
	
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值