初探Java装饰者模式和继承模式

来源:互联网 发布:淘宝主图背景 编辑:程序博客网 时间:2024/06/03 09:26
/** * Created by al-wl228081 on 2017/8/10. *///定义人类public class PersonDemo {    public static void main(String[] args){        Person p = new Person();//创建一个人        p.chifan();//调用吃饭的功能        NewPerson p1 = new NewPerson(new Person());//创建一个新人类        p1.chifan();//调用新人类的吃饭功能        NewPeson2 p2 = new NewPeson2();        p2.chifan();//调用新人2的吃饭功能    }public static class Person{        void chifan(){            System.out.println("吃饭");        }   }public  static class NewPerson {//方法一、创建新人类,采用装饰模式            private Person p1;            NewPerson(Person p){                this.p1 = p;            }        void  chifan(){            System.out.println("开胃酒");            p1.chifan();//此时的吃饭相当于是自己的方法            System.out.println("唱戏");        }    }public static class NewPeson2 extends Person{//方法二、继承的方法    public void chifan(){//重写父类的chifan方法        System.out.println("开胃酒");        super.chifan();//调用父类的方法        System.out.println("唱戏");    }}}
继承父类的方法需要重写,调用的时候没什么异样,正常调用,
而装饰设计方法则是直接扩充方法,程序实现原则是需要父类的方法存在,在扩充的类中老方可能还用的上;另外在
主函数调用的时候要把原类作为参数传入
NewPerson p1 = new NewPerson(new Person());//创建一个新人类
原创粉丝点击