您的位置:首页 > 其它

23种设计模式----------抽象工厂模式

2014-12-03 20:41 267 查看
抽象工厂模式:

在上一篇中讲到通过各个具体球类(如:足球,篮球等)来继承总球类(Ball),来实现通过BallFactory对具体球类的生产.

不过,当时只是能造出不同球类,而在每种球类中肯定也有颜色,大小等不同的属性.所以,为了实现在工厂中添加属性.将抽象的Ball球类,修改成Bll接口,在该接口中添加所需要的方法:

这种模式是抽象工厂模式,抽象工厂模式是抽象方法模式的升级.在有多个业务品种,业务分级时,采用抽象工厂模式生产需要的对象是一种非常好的解决房还是.(比如,在生产球类的时候,不仅要分球的种类,也要分球的颜色等....)

即:

//球接口
public interface Ball {

void getBallKind();

void getBallColor();
}


然后让之前具体球类实现该Ball这个接口

//篮球实现Ball
public abstract class Basketball implements Ball{
public void getBallKind(){
System.out.println("我是篮球!!!");
}
}

//足球实现Ball
public abstract class Football {
public void getBallKind(){
System.out.println("我是足球!!!");
}
}


这样,就能对球的种类进行不同的生产了.接下来就是给同种球类涂上不同的颜料了.

//给篮球涂色
public class BlackBasketball extends Basketball{

public void getBallColor() {
System.out.println("我是黑色篮球");
}

}

public class RedBasketball extends Basketball{

public void getBallColor() {
System.out.println("我是红色篮球");
}

}

//给足球涂色
public class BlackFootball extends Football{

public void getBallColor() {
System.out.println("我是黑色足球!!!");
}
}

public class RedFootball extends Football{

public void getBallColor() {
System.out.println("我是红色足球!!!");
}
}


每个品种的球类定义好了,然后就是定义生产各个球类的工厂了.

//红球工厂类
public class RedBallFactory implements BallFactory{

public Ball createBasketball() {
return new RedBasketball();
}

public Ball createFootBall() {
return new RedFootball();
}
}
//黑球工厂类
public class BlackFactory implements BallFactory{

public Ball createBasketball() {
return new BlackBasketball();
}

public Ball createFootBall() {
return new BlackFootball();
}
}


抽象工厂模式的扩展性一般。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: