spring源码中,委托模式的个人小感受

委托模式代码

注:不属于 23 种设计模式之一,是面向对象设计模式中常用的一种模式。

public interface Cook {
    void cook();
}

public class 川菜厨子 implements Cook {
    @Override
    public void cook() {
        System.out.println("我是川菜师傅,我的做菜工序有9*9 81到工序,总做及其繁杂,.....省略81行代码");
    }
}

public class 湘菜厨子 implements Cook {
    @Override
    public void cook() {
        System.out.println("我是湘菜师傅,我的做菜工序有7*7 49到工序,工作及其繁杂,.....省略49行代码");
    }
}



public class 业务场景 {
    public static void main(String[] args) {
        //要求 做饭  但是代码不要体现那么多,而且日后菜系还要换,
        // 但是在这个业务场景的代码类 里   不允许更改!!!为了维护时不修改此类中的源代码
        Cook cooker = new 厨师();
        cooker.cook();
    }
}

代码感受

  不知道你看完整个代码有啥感觉,反正我第一次感觉就是什么 静态代理,或者策略模式,还有就是感觉奇奇怪怪的感觉,很不爽,感觉业务场景的代码中直接调用  川菜厨子或者湘菜厨子的函数不是挺好的吗?  搞这么多的花里胡哨的,有问题吧。仔细想想了这都不是重点,涉及模式是一种巧妙的代码编写艺术,我们知道这种编程技巧带来的美感,运用到实际生产中减轻我们的二次开发维护等问题是目的。所以我仔细感受下,咱们暂且不说到底叫什么什么模式,就说他这个编写调用,带来的妙处。我在代码中写了一些注释,如果感受不深我们在看下面举的例子。
  首先把总结再说下:
委托说白了是吧大堆的代码隐藏起来,用一个函数调用简而言之代替大堆,代替并不准确说应该是隐藏!!为啥这么搞,解耦,原来说的解耦单一职责我经常是停留在方法上,通过这个委托模式,感觉是在类的层次上进行解耦。 
  • 栗子来了
* 需求制作一个门:
 零部件要求:  
				1 门框的木材金丝楠木   2 把手为琉璃把手  3 门为水晶钢化玻璃  4 80年代的左右旋转开滑的门锁!
  维护要求:  
				1可以与时俱进,意思零件随时可以替换为市场最好的。
    这里的 1 2 3 4  每个都是组成一个完成的门必要组成,但是这四个部件还必须是灵活可以随时更新的!
  
  拿其中的门锁举例,设计的时候这样考虑:
		
		工匠师傅预先在门上留下一个5*5cm  的一个位置空白给门锁,后来啊随着时代变化,这个门主人为了与时俱进,向我一样(哈哈)要求把这个门锁换成手触摸电子密码锁, 就把门锁替换了密码,替换的时候很简单,这样替换,(锁主人又为了向我一样低调且怀旧,想换完锁呢门从外表来看最好是没变化或者变化很小)由于锁是在门的夹心内部安置的,所以只要把盖子打开,取出80年代的左右开滑的门锁! 放进写有123456789 的电子显示屏的密码锁,然后再盖上盖子,仅仅留下一个显示屏,尽量门的外观不做巨大改动。
	,
	文字不够形象,大家看图片,(领会精神!美感不重要哈!)
	更换前是这个样子 左右旋转可以锁门

在这里插入图片描述

	,更换后是这个样子 去掉旋转按钮,用9键密码锁!

在这里插入图片描述

总结下,这个自认为还算恰当的例子:

此门就像我们写代码一样,要分为几个类 ,1 材料  2 门把手 3 门窗  4 门锁,  但是最好是将这几个类定义成接口!
    并且用一个组装类来,door.java   来组装一个门,而具体组装时就用4个接口类型来调用,这样保证日后维护时,door.java  类不用再去更改代码,仅仅去把具体的实现更改或者更换,或者增加,这都符合开闭原则。

spring 源码中的应用

在这里插入图片描述
在这里插入图片描述
大家看loadBeanDfinitions 被调用了时干活的实际上就是 XmlBeanDefinitionReader(beanFactory) 这个对象,!!!!

==并且后边还有很多,我想你一定明白了为什么spring经常嵌套那么深了吧,看起源码总觉的他那么绕来绕去,其实就是在解耦,方便维护,spring 的代码似乎是一个大的积木,细看是一个个模块。
但是在微观看每个模块就是许多重复的颗粒重复的利用,代码似乎做到了不做多于的冗余,之所以这么说是因为有时一定的冗余是必要的。从现在开始我准备像欣赏美女,哦不!,是艺术品来看待spring,从里到外一点一点拨开它的面纱… ==

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值