设计模式---抽象工场模式

抽象工场相对于简单工场模式又更进一步,简单工场每个工场与具体的产品绑定,而抽象工场则是为了产生产品系列组合。

它的好处是可以很方便的扩展产品系列,但是单个扩展新的产品不是很方便

这里我们先来定义二种产品Food和它的实现类,Shape和它的实现类如下

package com.zcj.abstractpattern;

public abstract class Food {
    public abstract void print();
} 
package com.zcj.abstractpattern;

public class Rice extends Food {

	@Override
	public void print() {
		System.out.println("i am rice");
	}
}
package com.zcj.abstractpattern;

public class Apple extends Food{

	@Override
	public void print() {
		System.out.println("i am apple");
	}
}
Shape:

package com.zcj.abstractpattern;

public interface Shape {
    public void print();
}
package com.zcj.abstractpattern;

public class Rectangle implements Shape {

	@Override
	public void print() {
		System.out.println("rectangle...");
	}
}
package com.zcj.abstractpattern;

public class Triangle implements Shape {

	@Override
	public void print() {
		System.out.println("Triangle...");
	}
}
抽象工场的定义和它的二个系列的产品实现:

package com.zcj.abstractpattern;

public interface AbstractFactory {
    public Food createFood();
    public Shape createShape();
}
package com.zcj.abstractpattern;

public class Type1Factory implements AbstractFactory {

	@Override
	public Food createFood() {
		return new Rice();
	}

	@Override
	public Shape createShape() {
		return new Rectangle();
	}
}
package com.zcj.abstractpattern;

public class Type2Factory implements AbstractFactory {

	@Override
	public Food createFood() {
		return new Apple();
	}

	@Override
	public Shape createShape() {
		return new Triangle();
	}
}
最终我们的测试程序:

package com.zcj.abstractpattern;

public class AbstractFactoryTest {
     public static void main(String[] args) {
		 //AbstractFactory aFactory = new Type1Factory();
		 AbstractFactory aFactory = new Type2Factory();
		 Food food = aFactory.createFood();
		 Shape shape= aFactory.createShape();
		 food.print();
		 shape.print();
	}
}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值