博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单工厂模式
阅读量:6614 次
发布时间:2019-06-24

本文共 1381 字,大约阅读时间需要 4 分钟。

简单工厂模式就是工厂类根据传入的参数决定创建出哪一种产品的实例。简单工厂模式涉及到工厂角色、抽象产品角色和具体产品角色。

  • 工厂类(Creator):是简单工厂的核心,含有与应用紧密相关的业务逻辑。工厂类在客户端的调用下创建产品对象,往往由一个java类实现。
  • 抽象产品(Product):是所有具体产品的父类或者接口。
  • 具体产品(Concrete Product):工厂类创建出的具体实例。
假设有一个Fruit[水果类]的接口,定义了生长、收获、种植的行为。工厂类FruitGardener会根据客户端的要求,创建出不同的水果对象,如果工厂类接受的参数不符合要求,就会抛出异常。
Fruit接口:
public interface Fruit {	// 生长	void grow();	// 收获	void harvest();	// 种植	void plant();}
Apple类:
public class Apple implements Fruit {	@Override	public void grow() {		System.out.println("apple.grow()");	}	@Override	public void harvest() {		System.out.println("apple.harvest()");	}	@Override	public void plant() {		System.out.println("apple.plant()");	}}
同理获得Grape.java  Strawberry.java
工厂类:
public class FruitGardener {	/**	 * 静态工厂方法	 * @param type	 * @return	 */	public static Fruit getFruitFactory(String type) {		if (type.equalsIgnoreCase("apple")) {			return new Apple();		} else if (type.equalsIgnoreCase("grape")) {			return new Grape();		} else if (type.equalsIgnoreCase("strawberry")) {			return new Strawberry();		} else {			throw new BadFruitException();		}	}}
简单工厂模式的优缺点:
优点:
  1. 该模式的核心是工厂类。该类含有必要的逻辑判断,可以决定在什么时候创建哪一个产品类的实例。而客户端可以免去直接创建产品对象的责任,仅仅负责“消费”产品。实现了对责任的分割。
缺点:
  1. 当产品之间存在复杂的层次等级关系,简单工厂类就显得乏力。
  2. 工厂类中聚集了所有的判断逻辑,如果这个“关键的枢纽”不能够正常工作,会造成整个系统的崩溃。
  3. 当具体的产品接口不同时,简单工厂来判断产生什么样的产品就会显得混乱。
  4. 简单工厂的工厂方法是静态方法,而静态方法无法继承。因此,简单工厂角色无法实现基于继承的结构。

转载于:https://www.cnblogs.com/xpeng-V/p/7349679.html

你可能感兴趣的文章
服务化改造实践 | 如何在 Dubbo 中支持 REST
查看>>
【第8章】JVM内存管理
查看>>
在绿色的河流上
查看>>
ovirt官方安装文档 附录G
查看>>
磁盘故障小案例
查看>>
了解相关.NET Framework不同组件区别及安装知识
查看>>
ToughRADIUS快速指南
查看>>
HTML
查看>>
【转】左手坐标系和右手坐标系
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
POJ 3335 Rotating Scoreboard 半平面交
查看>>
《Gamestorming》读书笔记
查看>>
域名和网址链接被微信浏览器拦截怎么办 微信屏蔽网址打开如何解决
查看>>
使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(二)
查看>>
ubuntu下安装jdk
查看>>
C/S与B/S架构比较
查看>>
XML学习总结(2)——XML简单介绍
查看>>
python操作数据库-安装
查看>>
你真的了解interface和内部类么
查看>>