上午骑车上班的途中不只不觉又想到了“业务重要还是技术重要”这个问题。在思考的过程中不知怎的将其联想到了工厂方法模式。特分析如下:
“客户“这个对象相当于是一个调用的客户端,“公司“对象在这里就是一个工厂,由它向客户端返回“程序员”这个接口的具体实现类“程序员A”或者“程序员B”。如下图所示:
![](http://p.blog.csdn.net/images/p_blog_csdn_net/woshichenxu/uml.bmp)
由图中可以分析得出:客户对象不会直接依赖于程序员A或B这样的具体对象,而只会依赖于程序员接口。因为它关注的是code这个编程方法。而具体的程序员只会由公司对象在程序运行时(对应此处为项目开始时)生成。 所以,对具体的程序员形成调用和依赖关系的只能是公司对象而不是客户对象。
对于业务和技术的结合问题一般会有以下两种做法。
做法一:
![](http://p.blog.csdn.net/images/p_blog_csdn_net/woshichenxu/unl1.bmp)
此种做法使用了专门的业务员这样一个接口,从而让程序员和具体的业务分析方法解藕。对于编码和分析业务相结合的问题通过在公司对象中提供管理方法(上图的manage方法)来实现,当然具体的实现有可能是方法拦截或者类似模板方法什么的办法不一而足。这就类似于给程序员进行专门的业务培训,而不是让他只在编程的时候再一个需求一个需求的问,在不断犯错和修改的循环中去“精通业务”。
做法二:
在公司对象中不提供管理方法(管理很糟的公司一般如此),也没有一个专门的业务员接口及其实现类。至于具体的业务问题的解决只能是完全委托给程序员对象的code方法去执行,也就是在编码的过程中去实现“分析业务”方法。当然这种做法就只能是在犯错和改正的循环中去完成业务的功能。这种做法也就好比是在业务逻辑代码中同时加入了数据库访问代码、事务处理代码、日志记录代码等等。 很显然这种做法在编程理论和方法日趋完善的今天已经是被广泛的放弃并被认为是错误的和不当的!这也是IT解的共识。这种错误也只有一个刚开始学习编程的新手程序员才会去犯。
通过以上两种方法的分析很对比,孰优孰劣就很明显了。而我们需要从中得出的结论就是对于一个程序员来说它的核心价值就是它的编程方法而不是其他业务什么的。如果你不这样认为,你认为业务比技术更重要从而将主要的时间和精力花在了业务的”精通“上,那就势必造成你在同等情况下花在技术上的时间减少。那么同样的情况下你就比相对在技术上花主要精力的程序员在技术上相对落后。当有一天你面对更好的机会需要再次择业时(不能保证正好是同样的行业)你的竞争力就会比那个程序员更差。原因如下:
1,你精通的是“具体的业务”而不是精通“灵活的很快的调用和掌握业务”的这种能力;
2,你在技术上又比别人差;
3,你采用这种方法作事情难免让公司领导因为你的“敬业”和“认真”而对你产生技术上的宽容和具体做事犯错的
默认(因为他们没有提供业务培训,而你又这么主动的学习业务)。这样更加深了你继续这样做下去成为业务的精通者的想法。
总之,一个“管理架构”设计良好能够持续良性发展的公司会按照规范的做法和专业的思想来完成具体的事情而不是过多的寄希望于一两个业务高手或技术高手的个人能力。这就好比良好的软件架构设计不会让一个类去完成太多的任务,也不会在一个方法中去作太多的事情。当然,话说回来,你可能会说我们现在就是一个才起步的小公司不可能按照你说的这种做法来做,因为我们要生存。对于这种情况我并没有否定你的这种做法。
我只是在这里提醒那些程序员朋友们:当你因为生活所迫的原因这样作是没有办法的。但是在这样作的同时,你一定要记住当你的管理者在向你灌输类似于“业务重要性大于技术”或者“某某大公司也是靠这种牛人撑起来的”从而希望你内心深处认为这种做法是“正确的”是”潮流所趋“的时候 ,你在内心深处一定要明白世界其实本非必然就是这个样子的。你的管理者要么就是“井底之蛙”真的不明白这个道理,要么就是为了公司的利益故意对你进行误导。你所要作的就是搞清楚身份和“对象”,用面向对象的思维来说就是要分清楚“程序员”对象和“公司”对象是有区别的。他们具有的”方法“(职能)是不一样的,这就好比资本家毕竟不是无产阶级,无产阶级不是资本家。各位看到这里可能会骂我:“员工要爱企业,要有主人翁精神!你这样是鼓吹个人主义!”。是的,员工是应该有这种精神但是这个问题又是另外一个范畴是属于道德的范畴,员工搞清楚自己的职能并不见得非要用道德的问题来上岗上线评价他。而且安心本职工作,一头钻研技术的员工对公司来讲也未必一定是一件坏事。相反,这正好是很多公司需要的人才。
为了生存,你可以暂时虚应它,可以装作认同并“崇拜”它。但是你的内心深处一定不能真的就去认同这种错误的落后的观念,以至于当真的有一个更好的机会摆在你的面前的时候因为这种观念的原因而错过!那才是程序员尤其是才参加工作很容易被误导的程序员真正的悲哀!!
分享到:
相关推荐
在给出的文件`DAODesign`中,可能包含了关于如何在实际项目中应用工厂模式和DAO模式的示例代码或者分析文章,可以进一步学习理解这两种模式的结合使用。通过深入理解和实践这两种模式,能够提升我们的编程技巧,使...
本文将深入探讨“工厂模式”、“反射模式”,并结合“登陆”、“查询”及“简单分页”的应用场景,帮助你理解如何在实际项目中运用这些技术。 首先,让我们来看“工厂模式”。工厂模式是一种创建型设计模式,它提供...
三层架构和工厂模式是软件开发中的两种重要设计思想,尤其在ASP.NET开发中,它们被广泛应用以构建高效、可维护的Web应用程序。 首先,我们来深入理解“三层结构”。三层架构是一种将应用逻辑拆分为三个独立层的软件...
系统分析师在信息技术领域扮演着至关重要的角色,他们负责理解业务需求,设计并实施有效的信息系统解决方案。这份指南详细介绍了这一过程中的关键技术和方法。 首先,系统分析师的角色与职责是本书的重点之一。系统...
在Java编程领域,"反射"、"工厂模式"和"MyBatis"是三个重要的概念,它们在构建高效、灵活和可扩展的系统中扮演着关键角色。本项目"反射优化工厂模式的mybatis工程"结合了这三个核心知识点,旨在提供一个实际的应用...
总结来说,"C# Winform抽象工厂架构"是一个展示了如何在Winform应用程序中使用抽象工厂模式和反射技术来实现灵活的报表查询系统的案例。通过这种方式,开发者可以构建出易于扩展和维护的多层架构应用,满足不同报表...
智能工厂是现代制造业的重要发展方向,它基于先进的信息技术、自动化技术和人工智能技术,构建智能化生产系统和网络化分布生产设施,旨在实现生产过程的全面智能化。智能工厂能够自主采集、分析、判断和规划,并通过...
设计模式分为三大类:创建型模式(如单例、工厂方法和抽象工厂),结构型模式(如装饰器、适配器和代理)和行为型模式(如策略、观察者和迭代器)。这些模式通过提供一种标准化的方法来处理常见的设计挑战,使得代码...
例如,工厂模式用于创建对象,装饰者模式用于动态地添加职责,观察者模式用于对象间的事件通知。理解并应用这些模式可以提高软件的可维护性和扩展性。 **3. 基于对象的分析** 在UML中,对象分析是需求理解的关键...
总结起来,业务流程再造方法论是现代企业在面对不断变化的市场和技术环境时,寻求竞争优势和持续改进的重要工具。它要求企业从战略层面出发,重新审视和设计其核心流程,以适应“3C”时代的挑战,确保企业的生存和...
4. **设计模式**:学习经典的软件设计模式,如工厂模式、单例模式、观察者模式等,及其在实际项目中的应用。 5. **数据库设计**:包括关系数据库的基本概念、ER模型、范式理论以及SQL语言的应用。 6. **接口设计和...
* 数字化工厂咨询规划:数字化工厂咨询规划是企业数字化转型的重要步骤,需要对企业的业务流程、生产管理、质量管理等进行分析和优化。 * 灯塔工厂咨询规划:灯塔工厂咨询规划是数字化工厂咨询规划的重要组成部分,...
智能工厂建设的主要模式及国内外发展现状 2018-08-21 智能工厂是实现智能制造的重要载体,主要通过构建智能化生产系统、网络化分布生产设施,实现生产过程的智能化。智能工厂已经具有了自主能力,可采集、分析、...
1. **工厂模式**:Spring通过BeanFactory和ApplicationContext作为工厂,用于创建和管理对象。 2. **单例模式**:Spring默认将bean配置为单例,保证系统内只有一个实例,提高性能和资源利用率。 3. **代理模式**:...
总的来说,智慧工厂数据大脑建设方案是中国制造2025战略的重要组成部分,它通过先进的信息技术推动制造业的智能化升级,促进生产模式、产业形态和商业模式的创新,为中国制造业的长远发展注入强大动力。
智慧工厂是一个基于物联网、工业互联网、智能制造和信息化技术的现代化工厂,它将传统的生产模式转变为智能化、自动化和信息化的生产方式。中国联通智慧工厂是中国联通公司推出的智慧工厂解决方案,旨在帮助企业实现...
【构建面向未来的智慧工厂】是关于利用现代信息技术和智能系统改造传统工厂,以实现更高效、灵活和可持续的生产模式的讨论。智慧工厂的核心在于利用信息化技术推动制造业的升级,提高生产效率,降低运营成本,并确保...
除了J2EE特定的设计模式,还有面向对象的通用设计模式,如单例模式、工厂模式等,它们不依赖于特定的平台或技术,而是基于面向对象的原则。这些模式已经经过了时间的检验,更为成熟,为J2EE设计模式提供了坚实的基础...
首先,需求分析阶段需全面理解工厂的业务流程,明确信息系统的功能需求。接下来,通过E-R图进行概念设计,构建出反映业务实体和关系的模型。逻辑设计阶段将E-R图转换为关系模式,进一步细化属性和关系。物理设计阶段...
业务价值链底层逻辑解析、绘制方法与案例 业务价值链是企业活动所生成的一种增值链,通过一系列活动构成的价值创造过程。迈克尔·波特(Michael E. Porter)教授在《竞争优势》一书中提出了“传统单体价值链”的...