抽象工厂模式是一种比较常见的模式。
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。
其通用类图如下图所示
实例讲解抽象工厂模式。
女娲造人类图
实例代码如下:
//工厂接口定义生产三种肤色的人种
public interface HumanFactory {
//创建黄色人种方法
public Human createYellowHuman();
//创建黑色人种方法
public Human createBlackHuman();
//创建白色人种方法
public Human createWhiteHuman();
}
//创建女性人种
public class FemakeFactory implement HumanFactory {
//创建黄色女性人种
public Human createYellowHuman() {
rerurn new FemakeYellowHuman();
}
//创建黑色女性人种
public Human createBlackHuman() {
rerurn new FemakeBlackHuman();
}
//创建白色女性人种
public Human createWhiteHuman() {
rerurn new FemakeWhiteHuman();
}
}
//创建男性人种
public class MakeFactory implement HumanFactory {
//创建黄色男性人种
public Human createYellowHuman() {
rerurn new MakeYellowHuman();
}
//创建黑色男性人种
public Human createBlackHuman() {
rerurn new MakeBlackHuman();
}
//创建白色男性人种
public Human createWhiteHuman() {
rerurn new MakeWhiteHuman();
}
}
//人种接口
public interface Human {
public void getColor();
public void talk();
public void getSex();
}
//黄色人种抽象类
public abstract class AbsYellowHuman implement Human {
public void getColor() {
}
public void talk() {
}
}
//黄色女性人种类
public class FemaleYellowHuman extends AbsYellowHuman {
public void geSex() {
}
}
//黄色男性人种类
public class MaleYellowHuman extends AbsYellowHuman {
public void getSex() {
}
}
//黑色人种抽象类
public abstract class BlackHuman implement Human {
public void getColor() {
}
public void talk() {
}
}
//黑色女性人种类
public class FemaleBlackwHuman extends AbsBlackHuman {
public void geSex() {
}
}
//黑色男性人种类
public class MaleBlackHuman extends AbsBlackHuman {
public void getSex() {
}
}
//白色人种抽象类
public abstract class WhiteHuman implement Human {
public void getColor() {
}
public void talk() {
}
}
//白色女性人种类
public class FemaleWhitewHuman extends AbsWhiteHuman {
public void geSex() {
}
}
//白色男性人种类
public class MaleWhiteHuman extends AbsWhiteHuman {
public void getSex() {
}
}