文章开头本人申明一点,本人写的文章力求让看的人能理解精髓而不是专业化,博客园的好多人在写文章的时候总想着怎么怎么专业化,巴不得看的人都看不懂才能体现出他的技术,他的牛B,技术不是用来显威风用的,在你掌握了某种技术的时候,不要想着横扫博客园之类的思想,有点技术就开始浮躁连说话都开始像李莲英;我不是想这样攻击别人,在技术的这条路上大家能平易近人互相学习,以交流技术为主,不要想着看别人的文章就是在挑刺,想法设法打击别人的信心,人无完人,人外有人,山外有山,各有所长,大家互补才能真正使我们国家的软件实力得到发展,本人很少说此类的话;说者无意,也许听着有心;本人所要说的是环境而不是想说谁,希望会技术的人能多帮助一些想学技术的人;
我下面要简谈的是常用的设计模式中的工厂模式,本人有个习惯就是就复杂的东西能以最简单最能体现思想的方式展现给大家,专业不专业不要紧,要紧的是能让看你文章的人不觉得是在浪费时间;工厂模式的大概思想是这样的:我们还拿现实生活中的场景来描述吧,比如我要买一个脸盆,我不需要知道这个脸盆是从哪里来的,怎么做出来的,我只要知道它是脸盆能用的脸盆,在代码中我需要一个脸盆对象时,我首先会去NEW一个脸盆对象,在NEW的时候我要来实现具体怎么NEW怎么构造等等细节,工厂的思想就是想让需要的人能通过一个公共的地方来获得,这个地方就是工厂,工厂负责所有的实例构造,尽量减少重复劳动,尽量使代码简单;请看图:
1:
所有想要获取指定实例的对象都是通过统一的接口方法获取,在工厂里面的事情调用者就无需关心了,每个人的实现方式不同,各有优势;为什么需要工厂呢,工厂的寓意就是尽可能的将重复的、冗余的、难以维护的代码进行整合;
每当我们去买脸盆的时候,可能有的人喜欢买品牌的,这个时候品牌就是我们公共的接口部分,如果读者不了解接口的相关细节可以借鉴本人的另一篇文章“.NET简谈接口”在这个复杂的社会里我想没有品牌可能我们的生命安全就难以保证了;有个规范性的标准,我们去挑选脸盆的时候就有方向了;请看代码图:
2:
在我们解决方案中,有四个项目,分别用来标识几种角色;在我们去超市买东西的时候,我们只要根据我心目中的品牌去购买就行了,一切问题直接找厂家;消费者的权益得到了保障;看实现代码:
3:
4:
上面两张图分别代表着两家不同厂商对生产方提出的生产标准,我们将其抽象成规范接口;继续请看图:
5:
6:
7:
8:
简单的工厂模式就介绍到这里了,希望能给您很直观的理解;谢谢;
本文出自 “深度训练” 博客,请务必保留此出处http://wangqingpei557.blog.51cto.com/1009349/562227