栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 设计模式 Factory Method 工厂方法 模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 设计模式 Factory Method 工厂方法 模式

Java 设计模式 Factory Method 工厂方法 模式

       Factory Method模式用于在父类中定义实例的生产方式,具体的处理全部交个子类负责,父类不生成具体的类。

涉及到的角色

  • 产品:抽象类定义了模式中生产的那些实例所持有的接口,但具体的处理有子类具体的产品负责。
  • 创建者:负责生成产品角色的抽象类。
  • 具体的产品:负责具体的产品。
  • 具体的创建者:负责生产具体的产品。 
public abstract class Product {
	
	public abstract void use();
	
}
public abstract class Factory {
	
	
	protected abstract Product createProduct(String orderName);
	
	public final Product create(String orderName) {
		return createProduct(orderName);
	}

}
public class Mooncakes extends Product {
	
	private String mooncakeName;
	
	Mooncakes(String mooncakeName) {
		System.out.println("生产 " + mooncakeName + " !");
		this.mooncakeName = mooncakeName;
	}

	@Override
	public void use() {
		System.out.println("吃 " + mooncakeName + " !");
	}

}
public class MooncakesFactory extends Factory {

	@Override
	protected Product createProduct(String mooncakeName) {
		return new Mooncakes(mooncakeName);
	}

}
public class Cars extends Product {
	
	private String carName;
	
	public Cars(String carName) {
		System.out.println("生产 " + carName + " !");
		this.carName = carName;
	}

	@Override
	public void use() {
		System.out.println("驾驶 " + carName + " !");
	}

}
public class CarsFactory extends Factory {

	@Override
	protected Product createProduct(String carName) {
		return new Cars(carName);
	}

}
public class Main {

	public static void main(String[] args) {
		Factory mooncakesFactory = new MooncakesFactory();
		Product p1 = mooncakesFactory.create("五仁月饼");
		Product p2 = mooncakesFactory.create("广式月饼");
		p1.use();
		p2.use();
		
		Factory carsFactory = new CarsFactory();
		Product p3 = carsFactory.create("猛登125");
		Product p4 = carsFactory.create("宝马");
		p3.use();
		p4.use();
	}

}
生产 五仁月饼 !
生产 广式月饼 !
吃 五仁月饼 !
吃 广式月饼 !
生产 猛登125 !
生产 宝马 !
驾驶 猛登125 !
驾驶 宝马 !

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/880433.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号