简单工厂模式

简单工厂模式,或称静态工厂方法模式,是类的创建模式,由一个工厂对象决定创建出哪一种产品类的实例。

一个例子,要求设计一个创建不同几何形状,如圆形,方形和三角形实例的描图员系统。每个几何图形要有画出draw()和擦去erase()两个方法。

类图如下:

 Shape接口

public interface Shape {

	//画图形
	public void draw();

	//擦去
	public void erase();
	
	
}

 几个具体实现类:

public class Circle implements Shape {

	@Override
	public void draw() {
		System.out.println("Circle.draw()");

	}

	@Override
	public void erase() {
		System.out.println("Circle.erase()");

	}

}

public class Square implements Shape {

	@Override
	public void draw() {
		System.out.println("Square.draw()");

	}

	@Override
	public void erase() {
		System.out.println("Square.erase()");
	}

}

public class Triangle implements Shape {

	//画图形
	public void draw(){
		System.out.println("Triangle.draw()");
	}

	//擦去
	public void erase(){
		System.out.println("Triangle.erase()");
	}
	
	
}

当创建不支持的形状时,抛出一个异常:

public class BadShapeException extends Exception {

	private static final long serialVersionUID = -2361054151723200277L;

	public BadShapeException(String message){
		super(message);
	}
}

 

 最后一个客户端:

public class Client {

	public static void main(String[] args) throws Exception {
		
		ArtTracer artTracer = ArtTracer.getInstance();
		
		artTracer.createShape("circle").draw();
		artTracer.createShape("circle").erase();
		
		artTracer.createShape("square").draw();
		artTracer.createShape("square").erase();
		
		artTracer.createShape("Triangle").draw();
		artTracer.createShape("Triangle").erase();
		
		artTracer.createShape("other").draw();

	}

}

 在上面的例子中,我们可以很好的看出简单工厂的优点:工厂类(ArtTracer)含有必要的逻辑判断,决定什么时候创建哪一个产品类的实例,这样客户端则可以免除直接创建产品对象的责任,而仅仅负责“消费”产品,从而实现了对责任的分离。

缺点:一旦工厂类不能正常工作了,则系统会受到影响。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值