【Design Pattern】Abstract Factory

[b]1.产品类[/b]
产品有Color和Shape两个系列,每个系列有两个具体的产品
package AbstractFactory;

public interface Color {

public void fill();

}

package AbstractFactory;

public class Red implements Color{

@Override
public void fill() {
System.out.println("Fill Red!");

}

}

package AbstractFactory;

public class Blue implements Color{

@Override
public void fill() {
System.out.println("Fill Blue!");

}

}

package AbstractFactory;

public interface Shape {

public void draw();
}

package AbstractFactory;

public class Square implements Shape{

@Override
public void draw() {
System.out.println("Draw a square!");
}

}

package AbstractFactory;

public class Circle implements Shape{

@Override
public void draw() {
System.out.println("Draw a circle!");
}
}


[b]2.抽象工厂类[/b]
用来生产指定颜色或者指定形状
package AbstractFactory;

public abstract class AbstractFactory {
abstract Color getColor(String color);
abstract Shape getShape(String shape) ;

}


[b]3.抽象工厂实现类[/b]
package AbstractFactory;

public class ColorFactory extends AbstractFactory{

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

@Override
Shape getShape(String shape) {
// TODO Auto-generated method stub
return null;
}

}


package AbstractFactory;

public class ShapeFactory extends AbstractFactory{

@Override
Color getColor(String color) {
// TODO Auto-generated method stub
return null;
}

@Override
Shape getShape(String shapeType) {
if(shapeType == null){
return null;
}
if(shapeType.equalsIgnoreCase("CIRCLE")){
return new Circle();
}else if(shapeType.equalsIgnoreCase("SQUARE")){
return new Square();
}
return null;
}
}


[b]4.工厂生成类[/b]
package AbstractFactory;

public class FactoryProducer {

public AbstractFactory getFactory(String type){
if(type.equalsIgnoreCase("Color")){
return new ColorFactory();
}else if(type.equalsIgnoreCase("")){
return new ShapeFactory();
}
return null;
}
}


[b]5.Demo[/b]
package AbstractFactory;

public class AbastractFactoryDemo {

public static void main(String[] args) {
AbstractFactory shapefactory = FactoryProducer.getFactory("Shape");
Shape circle = shapefactory.getShape("circle");
circle.draw();

AbstractFactory colorfactory = FactoryProducer.getFactory("Color");
Color red = colorfactory.getColor("red");
red.fill();
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值