要点
- 用来生产不同产品族的全部产品(对于增加新的产品无能为力,支持增加产品族)
- 抽象工厂模式是工厂方法模式的升级版本,再有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象,是一个非常好的解决方式。
/**
* 步惊云 接口
*/
public interface BJY {
void ErShiXiong();
void PaiYunZhang();
}
/**
* 步惊云 产品族
*/
class BJYFirstStage implements BJY {
@Override
public void ErShiXiong() {
System.out.println("步惊云 二师兄 first");
}
@Override
public void PaiYunZhang() {
System.out.println("步惊云 排云掌 first");
}
}
class BJYTwoStage implements BJY {
@Override
public void ErShiXiong() {
System.out.println("步惊云 二师兄 two");
}
@Override
public void PaiYunZhang() {
System.out.println("步惊云 排云掌 two");
}
}
/**
* 聂风 接口
*/
public interface NF {
void SanShiDiXiong();
void FengShenTui();
}
/**
* 聂风 产品族
*/
class NFFirstStage implements NF {
@Override
public void SanShiDiXiong() {
System.out.println("聂风 三师弟 first");
}
@Override
public void FengShenTui() {
System.out.println("聂风 风神腿 first");
}
}
class NFTwoStage implements NF {
@Override
public void SanShiDiXiong() {
System.out.println("聂风 三师弟 two");
}
@Override
public void FengShenTui() {
System.out.println("聂风 风神腿 two");
}
}
public interface FYFactory {
NF createNF();
BJY createBJYF();
}
class FirstStageFYFactory implements FYFactory {
@Override
public NF createNF() {
return new NFFirstStage();
}
@Override
public BJY createBJYF() {
return new BJYFirstStage();
}
}
class TwoStageFYFactory implements FYFactory {
@Override
public NF createNF() {
return new NFTwoStage();
}
@Override
public BJY createBJYF() {
return new BJYTwoStage();
}
}
public class Client {
public static void main(String[] args) {
FYFactory firstFY = new TwoStageFYFactory();
BJY bjyf = firstFY.createBJYF();
bjyf.ErShiXiong();
bjyf.PaiYunZhang();
}
}
![工厂模式要点&应用场景](https://img.haomeiwen.com/i11806186/176723f7ff5faa3b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
网友评论