<设计模式2>抽象工厂模式

抽象工厂模式,顾名思义,也是工厂模式中的一种。与之前不同的是,它多了一个接口,所有的工厂类继承这个接口来进行具体操作,显而易见,这样扩展性更好,修改的时候不需要修改之前的代码,重新创建即可。


方法也和之前的差不多,这里先贴出与之前相同的部分:

public interface IOperator {
	public void operate();
}

public class OperateFirst implements IOperator {

	public void operate() {
		System.out.println("OperateFirst");
	}

}

public class OperateSecond implements IOperator {

	public void operate() {
		System.out.println("OperateSecond");
	}

}

仍然是创建一个接口,然后实现这个方法,接下来便是不同之处。创建一个新的接口,让工厂类继承此接口:

public interface IProvider {
	public IOperator produce();
}
public class OperatorFirstFactory implements IProvider{

	public IOperator produce() {
		return new OperateFirst();
	}
 
}
public class OperatorSecondFactory implements IProvider{

	public IOperator produce() {
		return new OperateSecond();
	}
 
}


代码测试:

public class AbstractFactoryTest {

	public static void main(String[] args) {
		IProvider provder = new OperatorFirstFactory();
		IOperator operator = provder.produce();
		operator.operate();
	}

}

看起来是差不多,但是结构更加清晰。

第一次回顾:

刚刚看了一下之前写的实在潦草,完全没领会用意。看了相关博客和资料,重新理解了下抽象工厂和普通工厂的区别。

普通工厂模式是为了创建一个单一的对象,而抽象工厂模式则侧重于创建多个工厂类,多个功能相似但又具体不同的工厂类再来具体生产产品。

比如android中的bitmap是普通工厂方法,这些方法都创建出一个bitmap类,而当我们需求是创建人,但是人又分男人、女人,男人、女人又各自有不同种族、发色等各个不同属性。这时候如果只是一个普通工厂类来创建的话可能是非常复杂,虽说这些都是人但是却有着不同属性。这时候,我们可以把他们共同点抽象出来,创建出多个抽象工厂类:ManFactory、WomanFactory,通过这两个工厂类再继续构造出不同的人种,这就是抽象工厂与普通工厂方法的不同。当然普通工厂也可以实现,但是会更加复杂。

普通工厂模式侧重的应该是一个工厂类创建多个产品,而抽象工厂模式是多个工厂类各自生产一个具体的产品。

简单点来看可能是一到多和多到一的区别。

当然这些可能都只是表象,具体的研究下次遇到问题的时候再回顾分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值