Java 设计模式3-抽象工厂模式

抽象工厂模式是工厂方法模式的升级版。工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。

类似于下面这种方式:

(1) 抽象工厂接口:提供了产品的生成方法。

interface AbstractFactory
{
    public Product1 newProduct1();
    public Product2 newProduct2();
}

(2) 具体工厂:实现了产品的生成方法。

class createFactory1 implements AbstractFactory
{
    public Product1 newProduct1()
    {
        System.out.println("工厂 1 生成-->具体产品 11...");
        return new createProduct11();
    }
    public Product2 newProduct2()
    {
        System.out.println("工厂 1 生成-->具体产品 21...");
        return new createProduct21();
    }
}

对之前的工厂方法模式进行改造:

public interface Cat {
    void eat();
}

public interface Dog {
    void eat();
}
public class WhiteCat implements Cat {

    @Override
    public void eat() {
        // TODO Auto-generated method stub
        System.out.println("whiteCat eat");
    }

}
public class BlackCat implements Cat {

    @Override
    public void eat() {
        // TODO Auto-generated method stub
        System.out.println("BlackCat eat");
    }

}
public class WhiteDog implements Dog {

    @Override
    public void eat() {
        // TODO Auto-generated method stub
        System.out.println("whiteDog eat");

    }

}
public class BlackDog implements Dog{

    @Override
    public void eat() {
        // TODO Auto-generated method stub
        System.out.println("BlackDog  eat");
    }

}

工厂类的接口,生产两个等级的产品


public interface AnimalFactory {

    Cat createCat();

    Dog createDog();

}


不同的工厂类:

public class BlackAnimalFactory implements AnimalFactory {

    @Override
    public Cat createCat() {
        // TODO Auto-generated method stub
        return new BlackCat();
    }

    @Override
    public Dog createDog() {
        // TODO Auto-generated method stub
        return new BlackDog();
    }

}

public class WhiteAnimalFactory implements AnimalFactory{

    @Override
    public Cat createCat() {
        // TODO Auto-generated method stub
        return new WhiteCat();
    }

    @Override
    public Dog createDog() {
        // TODO Auto-generated method stub
        return new WhiteDog();
    }

}

测试类:


public class AnimalTest {

    public static void main(String[] args) {
        AnimalFactory blakAnimalFactory = new BlackAnimalFactory();
        Cat blackCat=blakAnimalFactory.createCat();
        blackCat.eat();
        
        AnimalFactory whiteAnimalFactory = new WhiteAnimalFactory();
        Cat whiteCat=whiteAnimalFactory.createCat();
        whiteCat.eat();

    }
}

结果:


BlackCat eat
whiteCat eat

你可能感兴趣的:(Java 设计模式3-抽象工厂模式)