最全java二十三种设计模式------(一)装饰模式 装饰类VS子类继承,搞定kafka看这一篇就够了

最后

终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

	System.out.println("吃饭");

}

}


  

  



  



//NewPerson,Man,Woman同属于Person体系中,要拓展Man或者Woman的eat功能  

//不需要通过Man或者Woman的子类来实现,可以把拓展功能统一定义在NewPerson(装饰类)中。  

//进而在Man或者Woman拓展功能时直接被NewPerson装饰就可以实现功能拓展。  



class NewPerson extends Person{

private Person p;

NewPerson(Person p){

	this.p=p;

}



void eat(){

	System.out.println("开胃酒");

	p.eat();

	System.out.println("吃点水果");

	

}

}

class Woman extends Person{

void eat(){

	System.out.println("女人吃饭");

}

}

class Man extends Person{

void eat(){

	System.out.println("男人吃饭");

}

}


  



一:继承



如通过子类继承来拓展Man类的eat功能



//如果想增强男人的eat功能,就要继承Man,这样通过子类SubMan来增强。

class SubMan extends Man{

void eat(){

	System.out.println("开胃酒");

	super.eat();

	System.out.println("吃点水果");

	System.out.println("饭后来根烟");

}

}


  



通过继承来拓展Woman类的eat功能还需要像Man一样,这样最好导致代码比较臃肿,为了避免这种臃肿,同时为了提高效率,就用到了装饰模式。



class Man extends Person{

void eat(){

	System.out.println("男人吃饭");

}

}

//如果想增强男人的eat功能,就要继承Man,这样通过子类SubMan来增强。

class SubMan extends Man{

void eat(){

	System.out.println("开胃酒");

	super.eat();

	System.out.println("吃点水果");

	System.out.println("饭后来根烟");

}

}

class SubWoman extends Woman{

void eat(){

	System.out.println("开胃酒");

	super.eat();

	System.out.println("吃点水果");

	System.out.println("饭后来根烟");

}

}


  

  



  



二:装饰模式



通过装饰模式来要拓展Man或者Woman的eat功能,就没必要再生成子类了



  



NewPerson,Man,Woman同属于Person体系中,要拓展Man或者Woman的eat功能  

不需要通过Man或者Woman的子类来实现,可以把拓展功能统一定义在NewPerson(装饰类)中。  

进而在Man或者Woman拓展功能时直接被NewPerson装饰就可以实现功能拓展。  



  



  



写完后调用一下试试。



public static void main(String[]args){

Man m=new Man();

NewPerson newm=new NewPerson(m);

newm.eat();

Woman w=new Woman();

NewPerson ww=new NewPerson(w);

ww.eat();

}

最后总结我的面试经验

2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。

另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。

BAT面试经验

实战系列:Spring全家桶+Redis等

其他相关的电子书:源码+调优

面试真题:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

07980)]

[外链图片转存中…(img-JiaR1UF2-1715566007981)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值