Java抽象類模板設計模式

例如,現在有三類事物: 
(1)機器人:充電,工作; 
(2)人:喫飯,工作,睡覺; 
(3)豬:進食,睡覺。 
現要求實現一個程序,可以實現三種不同事物的行爲

package com.demo;

/**
 * Created by Ranjx on 2018/7/22.
 * 定義一個抽象類
 */
public abstract class Action {
    public static final int EAT = 1;
    public static final int WORK = 3;
    public static final int SLEEP = 5;


    public abstract void eat();
    public abstract void work();
    public abstract void sleep();

    public void commond(int flag) {
        switch (flag) {
            case EAT :
                this.eat();
                break;
            case WORK :
                this.work();
                break;
            case SLEEP :
                this.sleep();
                break;
            default:
                break;
        }
    }
}

 

package com.demo;

/**
 * Created by Ranjx on 2018/7/22.
 * 機器人繼承抽象類,強制覆寫抽象方法
 */
public class Reboot extends Action{
    @Override
    public void eat() {
        System.out.println("機器人充電");
    }

    @Override
    public void work() {
        System.out.println("機器人工作");
    }

    @Override
    public void sleep() {

    }
}

 

package com.demo;

/**
 * Created by Ranjx on 2018/7/22.
 * 人繼承抽象類,強制覆寫抽象方法
 */
public class Human extends Action {
    @Override
    public void eat() {
        System.out.println("人喫飯");
    }

    @Override
    public void work() {
        System.out.println("人工作");
    }

    @Override
    public void sleep() {
        System.out.println("人睡覺");
    }
}
package com.demo;

/**
 * Created by Ranjx on 2018/7/22.
 * 豬繼承抽象類,強制覆寫抽象方法
 */
public class Pic extends Action {
    @Override
    public void eat() {
        System.out.println("豬喫飯");
    }

    @Override
    public void work() {

    }

    @Override
    public void sleep() {
        System.out.println("豬睡覺");
    }
}

 

package com.demo;

/**
 * Created by Ranjx on 2018/7/22.
 * 測試方法
 */
public class ActionTest {

    public static void function(Action a) {
        a.commond(Action.EAT);
        a.commond(Action.WORK);
        a.commond(Action.SLEEP);
    }

    public static void main(String[] args) {
        function(new Reboot());
        function(new Human());
        function(new Pic());
    }
}

 

 

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