`
rjhym
  • 浏览: 64199 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA组件设计原则(二)原则一:精准解决共性问题(摘自《java组件设计》)

 
阅读更多

组件定位:精准解决共性问题

组件的产生,来源于软件工程实践中,对重复、反复出现、普遍的、有相似性的问题进行分析,剥离掉各个问题的特性,抽取各个问题之间的共性,然后确定要设计一个或多个组件,这样就确定了组件要解决的问题,而这个问题必然是共性的问题,不能是个性、特例的问题。如果不是共性的问题,那么写完后的代码就只能在一种或有限的几种情况下才能被使用,这样就无法实现大规模复用。不能广泛的被复用,就不能叫组件。
因此,组件首先是业务驱动的,不是技术驱动的。不能因为我们有了新的技术,就想着要写几个新的组件。共性的业务问题,是组件的产生来源。
另外,即使确定了组件要解决的问题,组件还必须提供解决问题最合理、最有效的方式和方法。如果提供的方法不是最好的,那么也很难得到使用者的喜欢,最终也难以推广和复用。因此,组件设计上,必须提供解决问题的精准思路和方案。这是决定同类别的组件中,哪个组件能胜出的最主要原因。
一个组件提供的问题解决方法,是否最有效,主要评价原则如下:
1)技术与业务对齐:技术结构和技术概念要与业务上的模型、概念保持一致,在组件对外暴露的接口上,最好不要引入新的技术术语和概念,这样的组件最吻合业务的需求,也最容易理解。技术与业务对齐,这是组件设计的第一位重要原则。
2)技术方案的优势:这是结构设计、技术选型范畴内要考虑的问题。实现同一个功能,可以有很多不同的结构设计,也有很多不同的技术可以采用,优秀的组件,一定在技术方案上有明显的技术优势。
3)接口简单:组件暴露出来供外界使用的接口,必须足够简单。在概念和模型层面上与业务保持一致,另外接口封装、抽象上要仔细推敲,保证接口提供给别人使用时,调用者足够简单的使用。
4)功能强大:组件如果提供的功能太少,意味着能帮用户解决的问题比较少,因此这样的组件实用性大打折扣。如果组件的功能过多,就会让用户觉得这个组件非常臃肿和庞大,用户只用了其中一小部分功能,其它大部分功能都用不上或者很少用,这样用户要在一本厚厚的使用手册中,仔细寻找自己需要的部分,去除自己不需要的部分,这也算不上一个优秀的组件。因此,一个组件提供的功能,既要能满足多种场景下不同客户的需求,还要在不同的需求中进行取舍和合并,使提供的功能集不会超出客户实际使用需求太多。
分享到:
评论

相关推荐

    DDR设计的共性问题及解决方法.pdf

    关于内存 DDR的使用案例分析,设计讲解和原理,更适合实际使用学习

    近3年白酒行业调整期复盘深度报告:白酒复盘:共性与个性,背后暗喻了过去和未来.pdf

    近3年白酒行业调整期复盘深度报告:白酒复盘:共性与个性,背后暗喻了过去和未来.pdf

    java:JAVA中的共性

    java:JAVA中的共性

    基于某JAVA地剪刀石头布游戏设计——Java课程设计报告材料-.doc

    前言3 1剪刀石头布游戏设计思路阐述4 2程序概要设计5 功能需求分析5 性能需求分析5 程序框图5 Java类与自定义类相互继承的层次关系6 Java类与自定义类的说明6 类中成员与作用7 2.5程序运行效果与存在的问题7 2.5.1...

    基于Java和android的外卖APP设计.doc

    基于Java和android的外卖APP设计 摘要 目前社会发展进步的很快,生活节奏也快,所以人们很重视饮食,所以外卖订单也兴起 来了。现在网上订单系统已经开始出现,很多的商家和客户都发现了其隐藏的巨大潜力 。这种服务...

    史上最全Java面试题目大集合

    它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,14. 这个过程称为类继承。新类继承了原始类的特性,15. 新类称为原始类的派生类(子类),而16. 原始类称为新类的基类(父类)。派生类可以...

    JAVA面试题最全集

    26.java的awt和swing组件的GUI设计的关键 27.对于java流的认识 28.简单描述一下awt与swing区别。 29.简述java编程中事件处理模式。 30.你编写过applet吗?applet的安全权限如何?试列举java application或者...

    基于JAVA的剪刀石头布游戏设计.docx

    基于JAVA的剪刀石头布游戏设计 摘要:本课程设计使用Java语言,运用 java.io包和java.net包及getInputStream()、getOutputStream()等方法,编写出一个能在dos环境中显示出剪刀石头布游戏界面,启动服务器端线程,...

    EventBus最佳实践:Java手撕实现ESB底层事件委托处理机制的思路,配套演示代码

    但是如果将一个复杂的问题解耦成若干个小问题之后,如何让它们有机的协作在一起便成为了一个难题。大多数情况,系统内的各个组件是串联在一起,形成管道过滤器风格的架构,即上一个组件的输出是下一个组件的输入。但...

    java 面试题 总结

    Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,...

    java实现学生类、教师类继承同一个父类

    用到了java中方法的重写、重载、数组的相关操作,实现了教师、学生信息的录入、储存、人数统计、输出、删除等功能,缺失统计不同系不同班级学生成绩的功能,尽量有时间补上,程序很简单,仅仅是老师布置的实验题。...

    java基础面试一百问.doc

    继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。 对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类 称为原始类的派生类...

    Java高级程序设计测试含答案.docx

    Java高级程序设计测试含答案 Java高级程序设计测试含答案 您的姓名: [填空题] * _________________________________ Spring中将散落在系统中的共性问题集中解决的方案是()。 [单选题] * A. DI B. AOP(正确答案) C...

    java学习记录 php转行java基础学习.rar

    Java不仅是一门编程语言,还是一个...掌握java语言基础后接下来就是面向对象语言的共性:Java面向对象面向对象特性:封装、继承、多态等。掌握面向对象的基本原则以及在编程实践中的意义;掌握Java面向对象编程基本实现

    Java程序员面试宝典

    继承:继承是一种联结类的层次模型, 并且允许和鼓励类的重用, 它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生, 这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类...

    癌症患者生命质量测定量表体系共性模块的 研制(一):条目筛选及共性模块的形成

    癌症患者生命质量测定量表体系共性模块的 研制(一):条目筛选及共性模块的形成

    Java笔试题目汇总

    继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而...

    JAVA基础问题面试大全

     继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而...

    java程序员面试技巧

    继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可 以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性, 新类称为原始类的派生类(子类),...

Global site tag (gtag.js) - Google Analytics