Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1146432
  • 博文数量: 103
  • 博客积分: 1897
  • 博客等级: 上尉
  • 技术积分: 1717
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-19 21:02
文章分类

全部博文(103)

文章存档

2013年(19)

2012年(84)

分类: Java

2012-10-06 21:17:37

抽象工厂模式是用在有多个抽象对象时使用的一种设计模式。系统向外提供一个统一的接口,使得客户端可以在不指定产品的同时,产生同一个产品族中的同一个对象。其对应的uml图如下。
 下面我们通过一个实际例子来了解这个模型。
我们这里有两种产品鞋子和衣服。鞋子有男鞋和女鞋,衣服有男衣服和女衣服。
对应的类如下。
//一个鞋子的产品族
public interface Shoes {

}
//衣服的产品族
public interface Clothes {

}
public class GirlShoes implements Shoes {

}
public class BoyShoes implements Shoes {

}
public class GirlClothes implements Clothes {

}
public class BoyClothes implements Clothes{

}

提供了一个抽象的工厂方法。
//提供了两个创建产品的方法
public interface  AbstractFactory {

public Shoes createShoes();
public Clothes createClothes();
}
分别实现抽象的工厂
public class GirlProductFactory implements AbstractFactory {

@Override
public Shoes createShoes() {
// TODO Auto-generated method stub
return new GirlShoes();
}

@Override
public Clothes createClothes() {
// TODO Auto-generated method stub
return new GirlClothes();
}

}
public class BoyProductFactory implements AbstractFactory {

@Override
public Shoes createShoes() {
// TODO Auto-generated method stub
return new BoyShoes();
}

@Override
public Clothes createClothes() {
// TODO Auto-generated method stub
return new BoyClothes();
}

}

这样子,我们通过BoyProductFactory和GirlProductFactory就可以分别创建对应的男士和女士的产品。

其实抽象工厂方法是针对多个产品族的,如果只有一个产品,就可以退化成用工厂方法来解决这个问题,在面对这类
问题的时候,要根据实际情况来解决。


阅读(622) | 评论(0) | 转发(0) |
0

上一篇:aggregation和composition

下一篇:建造者模式

给主人留下些什么吧!~~