抽象工厂模式指把一个产品变成一个接口,它的子产品作为接口的实现,所以还需要一个总抽象工厂和它的分抽象工厂。
下面我们用一个案例去说明抽象工厂模式。
在class中可以选择super类和medium类,即选择一个产品的子类。在type中可以选择产品的种类。
现在我们在原有的模式上新增一个产品SemiDetacher。
由抽象工厂的设计模式,需要增加一个接口、两个实现类,修改抽象工厂增加新的方法。
接口 SemiDetacher
public interface SemiDetacher {public String getSemiDetacherInfo();
}
SuperSemiDetacher.java
public class SuperSemiDetacher implements SemiDetacher{public String getSemiDetacherInfo(){return "AbstractFactory\\superSemiDetacher.html";}
}
MediumSemiDetacher.java
public class MediumSemiDetacher implements SemiDetacher{public String getSemiDetacherInfo() {return "AbstractFactory\\mediumSemiDetacher.html";}
}
BuildingFactory
public abstract SemiDetacher getSemiDetacher();
MediumBuildingFactory
public SemiDetacher getSemiDetacher(){return new MediumSemiDetacher();}
SuperBuildingFactory
public SemiDetacher getSemiDetacher(){return new SuperSemiDetacher();}
AbstractFactoryGUI
下面是有关的修改(向type中添加Semi-detacher,并设置监听)
public static final String SEMIDETACHER = "Semi-detacher";cmbHouseType.addItem(SEMIDETACHER);if (type.equals(AbstractFactoryGUI.SEMIDETACHER)) { // Need code hereSemiDetacher sd = bf.getSemiDetacher();String fileNm = sd.getSemiDetacherInfo();putHouseInfoToScreen(fileNm);}
另外,还有两个html文件。
SuperSemiDetacher.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<p>super semidetacher
</p></body>
</html>
mediumSemiDetacher.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><p>medium semidetacher</p></body>
</html>
百度网盘
链接:https://pan.baidu.com/s/1pA12M670Poe1fJIiRnLE0w?pwd=3s9k
提取码:3s9k