抽象工厂设计模式

前言:

     抽象工厂设计模式是用来创建一个产品族的,简单工厂和工厂方法设计模式是用来创建一个具体产品的。


怎么实现:

     抽象工厂:工厂的父类,包含对多个产品的生明

     具体工厂:抽象工厂的实现,负责创建产品族中的多个产品对象

     实体父类:被创建对象的父类,负责描述所有实例的公共接口

     具体实体:要被创建的具体的对象


代码:

  水果类父类:

package com.xhx.designpattern;

public interface Fruit {
    /**
     * 水果
     */
    void get();
}

苹果抽象类:

package com.xhx.designpattern;

public abstract class Apple implements Fruit{
    public abstract void get();
}

香蕉抽象类:

package com.xhx.designpattern;

public abstract class Banana implements Fruit{
    public abstract void get();
}

北方苹果具体类:

package com.xhx.designpattern;

public class NorthApple extends Apple {
    @Override
    public void get() {
        System.out.println("北方苹果");
    }
}

北方香蕉具体类:

package com.xhx.designpattern;

public class NorthBanana extends Banana {
    @Override
    public void get() {
        System.out.println("北方香蕉");
    }
}

南方苹果具体类:

package com.xhx.designpattern;

public class SourthApple extends Apple {
    @Override
    public void get() {
        System.out.println("南方苹果");
    }
}

南方香蕉具体类:

package com.xhx.designpattern;

public class SourthBanana extends Banana {
    @Override
    public void get() {
        System.out.println("南方香蕉");
    }
}

工厂类父类:工厂用来生产一系列产品

package com.xhx.designpattern;

public interface FruitFactory {
    //实例化Apple
    Fruit getApple();

    //实例化Banana
    Fruit getBanana();
}

北方工厂:

package com.xhx.designpattern;

public class NorthFruitFactory implements FruitFactory {
    @Override
    public Fruit getApple() {
        return new NorthApple();
    }

    @Override
    public Fruit getBanana() {
        return new NorthBanana();
    }
}

南方工厂:

package com.xhx.designpattern;

public class SourthFruitFactory implements FruitFactory {
    @Override
    public Fruit getApple() {
        return new SourthApple();
    }

    @Override
    public Fruit getBanana() {
        return new SourthBanana();
    }
}


启动类:

package com.xhx.designpattern;


public class App 
{
    public static void main( String[] args )
    {
        //可以创建北方水果的工厂
        FruitFactory fruitFactory = new NorthFruitFactory();
        Fruit apple = fruitFactory.getApple();
        apple.get();

        Fruit banana = fruitFactory.getBanana();
        banana.get();
    }
}



猜你喜欢

转载自blog.csdn.net/u012326462/article/details/80566152