码迷,mamicode.com
首页 > 其他好文 > 详细

TemplateMethod(模块方法模式)

时间:2016-12-28 20:53:16      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:abs   class   each   end   public   prepare   nbsp   str   abstract   

/**
 * 模块模式
 * @author TMAC-J
 * 将一个完整的算法分离,分成不同的模块
 * 用于有很多步骤的时候,可能以后这些步骤还会增加,把这些步骤分离
 * 将有共性的部分放在抽象类中
 * 避免代码重复
 * 有利于算法扩展
 * 假设这个算法是人,人具有的共性是早上起来穿衣服,吃饭,工作
 */
public class TemplateMethod {
    
    abstract class Person{
        
        abstract void dressup();
        
        abstract void eat();

        abstract void work();
        
         public void operate(){  
             dressup();  
             eat();  
             work();  
         } 
        
    }
    
    public class Teacher extends Person{

        @Override
        void dressup() {
            System.out.println("穿衣");
        }

        @Override
        void eat() {
            System.out.println("吃饭");
        }

        @Override
        void work() {
            System.out.println("工作");
        }
        //老师独有的备课环节,扩展了这个步骤
        public void prepare(){
            System.out.println("备课");
        }
        
    }
    
    public class Student extends Person{
        
        @Override
        void dressup() {
            System.out.println("穿衣");
        }
        
        @Override
        void eat() {
            System.out.println("吃饭");
        }
        
        @Override
        void work() {
            System.out.println("工作");
        }
        
    }
    
    public void test(){
        Person teather = new Teacher();
        teather.operate();
        Person student = new Student();
        student.operate();
    }
    
}

 

TemplateMethod(模块方法模式)

标签:abs   class   each   end   public   prepare   nbsp   str   abstract   

原文地址:http://www.cnblogs.com/yzjT-mac/p/6230407.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!