工廠方法模式-案例二

步驟一:

定義DogFactory.java接口

package FactoryMethod;

public interface DogFactory {

    Dog createDog();
}

步驟二:

定義工廠的兩個實現類

muyangFactory.java

package FactoryMethod;

/**
 * @program: MyFactory
 * @ClassName muyangFactory
 * @description:
 * @author: hc
 * @create: 2020-03-19 21:46
 * @Version 1.0
 **/
class muyangFactory implements DogFactory {


    @Override
    public Dog createDog() {
        return new muyang();
    }
}

tianyuanFactory.java

package FactoryMethod;

/**
 * @program: MyFactory
 * @ClassName ConcreteAnimal
 * @description:
 * @author: hc
 * @create: 2020-03-19 00:33
 * @Version 1.0
 **/
class tianyuanFactory implements DogFactory {


    @Override
    public Dog createDog() {
        return new tianyuan();
    }
}

步驟三:
定義狗狗的抽象類,專門用來定義屬性
Dog.java

package FactoryMethod;

//狗狗接口
public abstract class Dog {

    //創建金毛的抽象方法
    public abstract void white();

    //創建柯基的抽象方法
    public abstract void yellow();

    //創建牧羊犬的抽象方法
    public abstract void black();
}

步驟四:

定義田園犬和牧羊犬屬性

tianyuan.java

package FactoryMethod;

class tianyuan extends Dog {

    @Override
    public void white() {
        System.out.println("創建了一隻白色的田園犬");
    }

    @Override
    public void yellow() {
        System.out.println("創建了一隻黃色的田園犬");
    }

    @Override
    public void black() {
        System.out.println("創建了一隻黑色的田園犬");
    }
}

muyang.java

package FactoryMethod;

/**
 * @program: MyFactory
 * @ClassName muyang
 * @description:
 * @author: hc
 * @create: 2020-03-19 21:46
 * @Version 1.0
 **/
class muyang extends Dog {

    @Override
    public void white() {
        System.out.println("創建了一隻白色的牧羊犬");
    }

    @Override
    public void yellow() {
        System.out.println("創建了一隻黃色的牧羊犬");
    }

    @Override
    public void black() {
        System.out.println("創建了一隻黑色的牧羊犬");
    }
}

步驟五:

實現類index.java

package FactoryMethod;

import FactoryMethod.Dog;

/**
 * @program: MyFactory
 * @ClassName FactoryMethod.Index
 * @description:
 * @author: hc
 * @create: 2020-03-19 00:59
 * @Version 1.0
 **/
public class Index {
    public static void main(String[] args) {

        DogFactory dog1 = new tianyuanFactory();
        Dog tianyuandog = dog1.createDog();

        tianyuandog.white();
        tianyuandog.yellow();
        tianyuandog.black();

        System.out.println("------------------------------------------------------------");

        DogFactory dog2 = new muyangFactory();
        Dog muyangDog = dog2.createDog();

        muyangDog.white();
        muyangDog.yellow();
        muyangDog.black();


    }
}

運行結果:

創建了一隻白色的田園犬
創建了一隻黃色的田園犬
創建了一隻黑色的田園犬
------------------------------------------------------------
創建了一隻白色的牧羊犬
創建了一隻黃色的牧羊犬
創建了一隻黑色的牧羊犬

Process finished with exit code 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章