您的位置:首页 > 编程语言 > Java开发

java设计模式-抽象工厂模式

2016-04-28 20:43 330 查看

抽象工厂模式

文件分为:

AbstractFactory,ShapeFactory,ColorFactory

Shape,Color

Triangle,Square,Rectangle

Red

部分代码没有贴出

AbstractFactory:

public abstract class abstractFctory {
abstract Color getColor(String color);
abstract Shape getsShape(String shape);
}


ShapeFactory:

public class ShapeFactory extends abstractFctory{

@Override
Color getColor(String color) {
return null;
}

@Override
Shape getsShape(String shape) {
if(shape == null){
return null;
}
if(shape.equalsIgnoreCase("TRIANGLE")){
return new Triangle();
} else if(shape.equalsIgnoreCase("RECTANGLE")){
return new Rectangle();
} else if(shape.equalsIgnoreCase("SQUARE")){
return new Square();
}
return null;
}

}


ColorFactory:

public class ColorFactory extends abstractFctory{

@Override
Color getColor(String color) {
if(color==null)
return null;
else if(color.equalsIgnoreCase("RED"))
return new Red();
return null;
}

@Override
Shape getsShape(String shape) {
// TODO 自动生成的方法存根
return null;
}

}


FactoryProducer:

这个是重点,这里开始是与工厂模式不同的地方

public class FactoryPeoducer {
public static abstractFctory getFctory(String factory){
if(factory.equalsIgnoreCase("SHAPE"))
return new ShapeFactory();
else if(factory.equalsIgnoreCase("COLOR"))
return new ColorFactory();
return null;
}
}


测试代码:

public class MainDemo {
public static void main(String[] args) {
abstractFctory shapeFactory = FactoryPeoducer.getFctory("SHAPE");
Shape shape = shapeFactory.getsShape("TRIANGLE");
shape.draw();

abstractFctory colorFctory = FactoryPeoducer.getFctory("COLOR");
Color red = colorFctory.getColor("RED");
red.fill();
}
}


输出:

Triangle
color:red


理解:抽象工厂模式是对工厂模式的一个拓展,使其更加灵活,但是繁琐的一个地方是要构建相应的子类去实现接口,代码繁琐。要增加一个系列的某一产品,既要在抽象的 Creator 里加代码,又要在具体的里面加代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: