打造山寨产品和伪造产品的利器——装饰模式

打造山寨产品和伪造产品的利器——装饰模式

ID:14385408

大小:59.00 KB

页数:8页

时间:2018-07-28

打造山寨产品和伪造产品的利器——装饰模式_第1页
打造山寨产品和伪造产品的利器——装饰模式_第2页
打造山寨产品和伪造产品的利器——装饰模式_第3页
打造山寨产品和伪造产品的利器——装饰模式_第4页
打造山寨产品和伪造产品的利器——装饰模式_第5页
资源描述:

《打造山寨产品和伪造产品的利器——装饰模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、【文章标题】打造山寨产品和伪造产品的利器——装饰模式【文章作者】曾健生【作者邮箱】zengjiansheng1@126.com【作者QQ】190678908【作者博客】http://blog.csdn.net/newjueqihttp://newjueqi.javaeye.com/【编程环境】JDK1.6.0_01【作者声明】欢迎转载文章,但转载请保留文章的完整性以及注明文章的出处。*******************************************************************************现在“山寨文化”和“伪造产品”大

2、行其道,“山寨春晚”“山寨明星”“山寨手机”等等,“伪造产品”就更加不用说了,广大群众也深受其害(本人也是其中一位受害者!!!)不说不知道,在学设计模式的过程中本人一不小心发现了装饰模式是有很强的“伪造功能”(“伪造功能”是指把别人写的类,功能模块等包装一下换成自己写的,但其实核心还是别人写的代码)和“山寨功能”(利用类提供的接口添加代码增强类的功能)。《设计模式:可复用面向对象软件的基础》是这样定义装饰模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来来说,装饰模式比生成子类更加灵活。一般来说,实现装饰器模式可分为下面3步:1.建立包装类,定

3、义构造函数接收包装对象2.建立成员引用,让被包装对象作用于整个包装类3.根据需要增加一些功能函数已增强类的功能如果我们把装饰器模式实现“伪造功能”,就分为以下3步(非常邪恶的!!!):1.建立包装类,定义构造函数接收包装对象的参数2.建立成员引用,让被包装对象作用于整个包装类3.用自定义的函数封装包装对象的函数以前有个著名的“汉芯造假”事件,大概就是说把某个外国芯片的标识去掉,然后改头换面,就变成了所谓的“汉芯”了。用装饰器模式实现“伪造功能”模拟这个过程的代码如下://一个美国芯片类,这个芯片类有三个功能://1.显示自身的信息//2.获得两个数相加的结果//3.获得

4、两个数相减的结果classAmericanChip{//美国芯片类的构造函数AmericanChip(){}//美国芯片类显示自身信息的函数publicvoidprintInfo(){System.out.println("我是美国的芯片");}//获得两个数相加的结果publicdoubleadd(doublex,doubley){returnx+y;}//获得两个数相减的结果publicdoublesub(doublex,doubley){returnx-y;}}//这是造假芯片类,把美国的芯片改头换面后完成的//步骤分为三步://1.建立包装类,定义构造函数接收包

5、装对象的参数//2.建立成员引用,让被包装对象作用于整个包装类//3.用自定义的函数封装包装对象的函数classFakeChip{//建立被包装类的引用privateAmericanChipamericanChip;FakeChip(){//构造美国的芯片类的实例this.americanChip=newAmericanChip();}//造假芯片类显示自身信息的函数,这个函数就相同于把美国芯片的标识去掉,换上“汉芯”的标识publicvoidprintInfoFake(){System.out.println("我是造假芯片");}//造假芯片类通过美国芯片类获得两个

6、数相加的结果publicdoubleaddFake(doublex,doubley){returnamericanChip.add(x,y);}//造假芯片类通过美国芯片类获得两个数相减的结果publicdoublesubFake(doublex,doubley){returnamericanChip.sub(x,y);}}造假芯片类FakeChip共暴露了3个接口:1.publicvoidprintInfoFake()2.publicdoubleaddFake(doublex,doubley)3.publicdoublesubFake(doublex,doubley)

7、从代码可看出,除了printInfoFake()方法是显示自身的信息外(造假产品要先显示一下自身的产品信息使别人误认为是正牌货),其他的两个方法addFakehe和subFake实际上是调用了美国芯片类的相关方法,这就模拟了“汉芯”造假的过程。可能有的读者可能问使用继承不是能实现这个结果吗?选用装饰器模式而不用继承有两个原因:1.装饰器模式可选择需要暴露被包装类(美国芯片类AmericanChip)的哪些公有函数,虽然也可以用继承后覆盖同名函数的方法实现,但如果包装类(美国芯片类AmericanChip)的公有函数非常多的话,那真的写代码

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。