说到装饰,不由要说到女性。
去年过年回家给我妈买了周大福项链,很明显就感觉待遇就不一样了,即使这样,还是被一个阿姨说应该买更重点的。看来钱这种东西果然是多一点才好。虽然自己无所谓,但让家里人更开心也是一种幸福啊。女朋友也很喜欢手链什么的,戴上手链气质的确会感觉挺不同的,我觉得这世界基本没有女生不喜欢身上装饰个神马的。
装饰不是衣服,也不会影响自己本来的搭配,它是一种在原本基础上锦上添花却不会影响原本结构的东西。
言归正传,假若你有个女朋友叫WPF,她有自己喜欢的搭配,当你追到她的时候她已经搭配好自己了,怎样才能在不改变她的同时加深下她的气质呢,那就需要钻石,项链。。Adorner。很突兀对么。其实Adorner和装饰物性质一样,需要一些努力(用时间来学习=金钱)之后就能取悦自己的女朋友了。
当你需要一个悬浮物不影响自己本来UI的建设,当你需要一个可以跟随你一个控件点击产生的跟随UI(比如点击一个按钮就在旁边出现一个小框,盖住之前UI的那种),当你需要一个可以定义为装饰而不是骨架的话,那就请使用装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。关于它的定义这里我就不概述了。链接直接给上http://baike.baidu.com/link?url=_c_YDD4bZSkpem21xAz6qTwU2HYHLxF2PBWFKQx7oGCIPnx2DUzq-KIU8Ni3h2alqYsZN8VY6pGDZkOZi84rZK
而在WPF中,最常用到的便是Adorner了。
在这里我便不赘述如何使用了,我会在最后给上链接,毕竟很多人写过,我希望我能做到的是能够把这个理念叙述清楚,而并不只是贴代码,授人以鱼不如授人以理念。
Adorner机制我觉得比较相似于上海晾衣服。上海是个很奇葩的城市,尤其是晾衣服。都是那种一根棍子串很多搭在外面架子上,我住在四楼,每次都战战兢兢。其实Adorner也类似,要晒的衣物便是Adorner里装的元素,衣服那根棍子是AdornerLayer,架子则是AdornerDecorator。
自己写好的元素装进Adorner里,用AdornerLayer串好,搭在AdornerDecorator的架子上。便是整个Adorner的实现。
自己感觉这里就结束还蛮突兀的,但实际上也就是那么简单。解耦和,分成各个功能模块,然后再组合在一起工作,这种方式着实令人着迷,也非常容易理解。
具体的使用方法和解释下面我就贴上来吧,站在巨人肩膀上才能更伟大,谢谢软件这个行业善于分享带来的世界的善意。
概念:http://www.cnblogs.com/loveis715/archive/2012/03/31/2427734.html
结构图:http://www.cnblogs.com/lusonixs/articles/1588859.html
CodeProject精品例子:http://www.codeproject.com/Articles/54472/Defining-WPF-Adorners-in-XAML
http://www.codeproject.com/Articles/709266/Design-Adorners-in-XAML-with-Data-Binding-Support
http://www.codeproject.com/Articles/72544/Editable-Text-Block-in-WPF