您的位置:首页 > 其它

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

2016-06-10 14:17 375 查看
抽象工场相对于简单工场模式又更进一步,简单工场每个工场与具体的产品绑定,而抽象工场则是为了产生产品系列组合。

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

这里我们先来定义二种产品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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: