设计模式——工厂模式和抽象工厂模式

本文深入探讨了工厂模式和抽象工厂模式的概念,对比两者在产品创建、使用场景及优缺点上的区别,通过生动的例子帮助理解两种模式的应用。

1.工厂模式

  • 工厂模式是java设计中常用的设计模式之一,属于创建者设计模式,该模式不在意具体实现对象的类是谁,提供一个类实现工厂直接按需要决定获取哪个类。
  • 解决问题:创建对象时接口的选择。
  • 优点:1.使用一个接口就可以创建多个不同对象。2.扩展性高,增加产品只需要增加一个实现类。
  • 缺点:每次增加产品都要改写工厂代码,并且多个类的依赖也增加了程序的依赖性。
  • 理解:工厂模式就像是去4s店买车,去了之后可以根据需求来挑选,不需要关心车是怎么组装完成的。
  • 代码

定义一个接口

public interface shape{
	void draw();
}

完成具体实现的类

public class Cricle implements animal{
	@Override
	public void draw(){
		System.out.println("Cricle");
	}
}
public class Square implements animal{
	@Override
	public void draw(){
		System.out.println("Square");
	}
}

实现工厂类

public class Factory(){
	//完成get方法,通过不同的条件获取不同的类
	public Shape get(String shape){
		if(shape == null){
			return null;
		}else if(shape.equalsIgnoreCase("CRICLE")){
			return new Cricle();
		}else{
			return new Square();
		}
	}		
	return null;
}

抽象工厂模式

  • 如果说工厂模式是一条创建同一系列产品的流水线,那么抽象工厂模式就是多条创建不同产品的流水线的一个集合工厂。需要注意的是,各个流水线(工厂)之间是相互独立的,并且流水线(工厂)是生产一整套有关联或者有依赖的产品(至少有两种产品)。
  • 解决问题:也是解决创建对象时接口的选择。
  • 优点:当一个工厂的多个产品被同时使用,保证使用的是同一工厂生产的产品。(例子:假设AK47工厂生产AK47枪和子弹,保证是配套使用的,如果不配备的子弹和枪可能无法使用。)
  • 缺点:扩展一个新的产品工厂比较麻烦,又要在抽象类中加获取方法,又要实现具体。
  • 理解:抽象工厂模式就像是集团企业,手里握有多个品牌,每个品牌下都有一系列该品牌的产品(如著名奢侈品牌LVMH,旗下有很多品牌,时装品牌LV, 美酒酩悦等等,同时这些品牌又有自己的一系列产品。)

工厂模式和抽象工厂模式的比较

  • 从产品的角度看:抽象工厂强调产品的关联性,所以需要至少两个产品,而工厂方法强调产品本身,可以只生产一个产品或者多个都行。
  • 从面向使用的而角度看:抽象工厂面向客户端,使用的是一系列产品共同作用。而工厂方法,使用产品本身。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值