抽象工廠模式 java版

1、java版java


抽象產品A ->  ProductA.java : ide


public interface ProductA {
    public void fun();
}


具體產品A1 -> ProductA1.java :測試

public class ProductA1 implements ProductA{
    @Override
    public void fun() {
        System.out.println("ProudctA1 -> fun()");
    }
                                                                                                                                 
}


具體產品A2  -> ProductA2.java :get

public class ProductA2 implements ProductA {
    @Override
    public void fun() {
        System.out.println("ProductA2 -> fun()");
    }
}


抽象產品B ->  ProductB.java : 產品


public interface ProductB {
    public void fun();
}


具體產品B1 -> ProductB1.java :it


public class ProductB1 implements ProductB {
    @Override
    public void fun() {
        System.out.println("ProductB1 -> fun()");
    }
}


具體產品B2 -> ProductB2.java :class


public class ProductB2 implements ProductB {
    @Override
    public void fun() {
        System.out.println("ProductB2 -> fun()");
    }
}


抽象工廠 -> Factory.java :im


public interface Factory {
    public ProductA getProductA();
    public ProductB getProductB();
}


具體工廠1 -> Factory1.java :static


public class Factory1 implements Factory {
    @Override
    public ProductA getProductA() {
        return new ProductA1();
    }
    @Override
    public ProductB getProductB() {
        return new ProductB1();
    }
}


具體工廠2 -> Factory2.java :di


public class Factory2 implements Factory {
    @Override
    public ProductA getProductA() {
        return new ProductA2();
    }
    @Override
    public ProductB getProductB() {
        return new ProductB2();
    }
}


測試 -> Test.java :


public class Test {
                 
    public static void main(String[] args) {
                     
        Factory factory;
                     
        factory = new Factory1();
        factory.getProductA().fun();
        factory.getProductB().fun();
                     
        factory = new Factory2();
        factory.getProductA().fun();
        factory.getProductB().fun();
                     
    }
}


測試結果:


ProudctA1 -> fun()

ProductB1 -> fun()

ProductA2 -> fun()

ProductB2 -> fun()

相關文章
相關標籤/搜索