抽象工厂模式是用在有多个抽象对象时使用的一种设计模式。系统向外提供一个统一的接口,使得客户端可以在不指定产品的同时,产生同一个产品族中的同一个对象。其对应的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) |