抽象工厂模式

要点

  • 用来生产不同产品族的全部产品(对于增加新的产品无能为力,支持增加产品族)
  • 抽象工厂模式是工厂方法模式的升级版本,再有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象,是一个非常好的解决方式。
/**
 * 步惊云 接口
 */
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();
    }
}





抽象工厂模式_第1张图片
工厂模式要点&应用场景

你可能感兴趣的:(抽象工厂模式)