欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

抽象工厂设计模式

程序员文章站 2022-06-15 14:16:24
...

解决问题:创建一系列相关的对象,不需要指定具体类。

特点:抽象工厂定义了用于创建不同产品的接口, 但将实际的创建工作留给了具体工厂类。 每个工厂类型都对应一个特定的产品变体。

定义通用接口1&2...--->具体类实现具体方法---->定义实际创建对象的接口/抽象类--->子类继承决定创建哪个具体类

public abstract class AbstractProduct1{//通用产品接口1
    public abstract void method();
}

public class CreteProduct1 extends AbstractProduct1{//具体产品1
    public void method(){
        System.out.println("111111111111");
    }
}
public class  CreteProduct2 extends AbstractProduct1{//具体产品2
    public void method(){
        System.out.println("222222222222");
    }
}
public abstract class AbstractProdect2{//通用接口2
    public abstract void method();
}
public class CreteProduct3 extends AbstractProduct2{//具体产品3
    public void method(){
        System.out.println("333333333333");
    }
}
public class CreteProduct4 extends AbstractProduct2{//具体产品4
    public void method(){
        System.out.println("44444444444444");
    }
}

public abstract class AbstractFactory{//基础创建者
    public abstract AbstractProduct1 createProduct1();
    
    public abstract AbstractProduct2 createProduct2();
}

public  class CreteFactory1 extends AbstractFactory{//具体创建者1
    public  AbstractProduct1 createProduct1(){//通过继承基础创建者
        return new creteProduct1();//创建产品1
    }
    
    public  AbstractProduct2 createProduct2(){//创建产品2
        return new CreteProduct2();
    }
}

public  class CreteFactory2 extends AbstractFactory{//具体创建者2
    public  AbstractProduct1 createProduct1(){
        return new CreteProduct3();//创建产品3
    }
    
    public  AbstractProduct3 createProduct2(){//创建产品4
        return new CreteProduct4();
    }
}

抽象工厂设计模式