创建型模式~工厂模式

博客介绍了工厂方法模式,又称虚拟构造函数或多态性工厂模式,定义创建产品的工厂接口,将创建工作推迟到子类。阐述了抽象工厂、具体工厂、抽象产品、具体产品四个角色,提及该模式有封装性好、可扩展性强等优点,还给出农场系统栽种收获水果的实例。

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

定义:

又称虚拟构造函数模式或者多态性工厂模式,定义一个创建产品的工厂接口,将实际性创建工作推迟到子类中

 

四角色

  1. 抽象工厂

  2. 具体工厂:创建产品对象

  3. 抽象产品

  4. 具体产品 

优点:

  1. 良好的封装性,代码结构清晰
  2. 优秀的可扩展性
  3. 屏蔽产品类
  4. 典型的解耦框架

 

 实例:农场系统

package 工厂模式;

public interface Gardener {
	public Fruit factory();
}
package 工厂模式;

public interface Fruit {
	public void grow();
	public void harvest();
	public void plant();
}
package 工厂模式;

public class AppleGardener implements Gardener{

	@Override
	public Fruit factory() {
		// TODO 自动生成的方法存根
		return new Apple();
	}
	
}
package 工厂模式;

public class GrapeGardener implements Gardener{

	@Override
	public Fruit factory() {
		// TODO 自动生成的方法存根
		return new Grape();
	}
	
}
package 工厂模式;

public class Apple implements Fruit{

	@Override
	public void grow() {
		// TODO 自动生成的方法存根
		System.out.println("苹果正在生长");
	}

	@Override
	public void harvest() {
		// TODO 自动生成的方法存根
		System.out.println("收获苹果");
	}

	@Override
	public void plant() {
		// TODO 自动生成的方法存根
		System.out.println("栽种苹果");
	}

}
package 工厂模式;

public class Grape implements Fruit{

	@Override
	public void grow() {
		// TODO 自动生成的方法存根
		System.out.println("葡萄正在生长");
	}

	@Override
	public void harvest() {
		// TODO 自动生成的方法存根
		System.out.println("收获葡萄");
	}

	@Override
	public void plant() {
		// TODO 自动生成的方法存根
		System.out.println("栽种葡萄");
	}

}
package 工厂模式;

public class 农场 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Gardener gardener = new AppleGardener();
		Fruit appleFruit = gardener.factory();
		appleFruit.plant();
		appleFruit.grow();
		appleFruit.harvest();
		
		Gardener gardener2 = new GrapeGardener();
		Fruit grapeFruit = gardener2.factory();
		grapeFruit.plant();
		grapeFruit.grow();
		grapeFruit.harvest();
		
	}

}

栽种苹果
苹果正在生长
收获苹果


栽种葡萄
葡萄正在生长
收获葡萄
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值