java设计模式--抽象工厂

1、抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。

2、   一个系统不应当以来与产品类实例如何被创建、组合和表达细节,这对于所有形态的工厂模式是重要的。

这个系统的产品有多于一个产品族,而系统只消费其中某一族的产品。

同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中表现出来。

系统一个产品类的库,所有的产品以同样的接口出现,从而使得客户端不依赖与实现。

3、抽象工厂对“开-闭”原则的支持

对于产品族的增加,抽象工厂符合“开-闭”原则,而对于产品层次的增加,抽象工厂不符合“开-闭”原则。

4、实例

public abstract class AbstractFactory {
		abstract public AbstractProductA CreateProductA();
		abstract public AbstractProductB CreateProductB();
	}

public class ConcreteFactory extends AbstractFactory {
		@override 
		public AbstractProductA CreateProductA() {
		    return new ProductA();
		}
		
		@override 
		public AbstractProductB CreateProductB() {
		    return new ProductB();
		}
	}
	
	public abstract class AbstractProductA {
		protected abstract void use();
	}
	
	public abstract class AbstractProductB {
		protected abstract void use();
	}
	
	public class ProductA extends AbstractProductA {

		@Override
		protected void use() {
			System.out.println("A");
		}
		
	}
	
	public class ProductB extends AbstractProductB {

		@Override
		protected void use() {
			System.out.println("B");
		}
		
	}

public static void main(String[] args) {
		ConcreteFactory mFactory = new ConcreteFactory();
		AbstractProductA mAbstractProductA = mFactory.CreateProductA();
		AbstractProductB mAbstractProductB = mFactory.CreateProductB();
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值