白话设计模式《模板模式》《策略模式》《代理模式》

《模板模式》

模板就好像杨过使用“玄铁重剑”,独孤求败就是相当于【模板类】,他的玄铁重剑就是【模板类的模板方法】,杨过需要先练就独孤求败的内功心法【被模板方法调用的抽象方法】才能驱动(玄铁重剑很重)。



《策略模式》

这个好像《哆啦A梦》中大雄的机器猫【策略类】,大雄需要遇到困难需要策略【调用策略的方法】,多啦A梦【策略接口】就会拿出很多策略【策略的实现类】去帮助他。大雄只有一个多啦A梦,也就是说万一静香遇到了问题也只能找多啦A梦了(别和我说还有多啦美!!)。



《代理模式》

代理模式,其实可以理解为,找个替身代课~~只要替身【代理类】知道大学的课是怎么上的就可以了【实现相同的代理方法】,不容易被老师发现,然后就可以代替去我们点名和听课【代理类调用被代理对象的代理方法】。这个和策略模式很像,区别在于:每个人都有一个替身,而策略类则是全世界只有一个多啦A梦。



从面向对象的角度上分析,《模板模式》体现的是继承关系,《策略模式》体现的是组合关系,《代理模式》体现的是聚合关系。


什么是组合?什么是聚合?

组合就是,人和身份证的关系,每个人拥有一张身份证。身份证就是策略类,身份证丢了,你仍然是个人。

聚合就是,公司和部门的关系,一个公司由多个部门组成,无部门不公司。


如果你觉得组合和聚合很区分,你也可以认为他们是一样的。以前我也是这样认为的,并没有什么不妥!

你可能感兴趣的:(java,编程,UML)