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

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

 
阅读更多

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

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

相关推荐

    Java设计模式:支撑架构重要组件

    设计模式作为静态的架构支撑,提供了经过验证的解决方案,帮助解决常见的设计问题。在J2EE蓝图模式分类中,我们可以看到设计模式在大型企业级应用架构中的关键作用。设计模式如工厂模式、单例模式、观察者模式等,...

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

    根据给定文件信息,《DDR设计的共性问题及解决方法》这篇文档主要讨论了DDR(Double Data Rate)内存设计中的共性问题和它们的解决方法,特别适合于实际应用的学习和使用。文章涵盖了DDR内存的组织与操作、特性与...

    Java设计模式经典搞笑珍藏

    ### 知识点二:Java设计模式的种类 根据提供的部分内容,可以看出本书涉及到多种设计模式,其中包含但不限于: 1. **策略模式(StrategyPattern)**:定义一系列算法,将每个算法封装起来,并使它们可相互替换。...

    JAVA面向对象程序设计(期末考试试题及答案).zip

    10. **设计模式**:设计模式是解决常见编程问题的经验总结,如单例模式、工厂模式、观察者模式等,它们在实际开发中广泛应用。 期末考试试题及答案.pdf则可能包含了对以上知识点的具体应用和测试,包括选择题、填空...

    Java程序设计实验报告文本下载

    总结来说,这个Java程序设计实验是一个综合性的学习任务,它涵盖了Java编程基础、Eclipse工具使用、物理和数学原理的应用,以及问题解决能力的培养。学生在实践中不仅能深化对Java语言的理解,也能提升自身的编程...

    java面试总结文档

    - **平台无关性**:Java语言被设计为可以在任何平台上运行而无需重新编译,这是通过JVM实现的。JVM能够根据目标平台的具体情况调整其行为,从而使Java程序能够在不同的硬件架构上无缝运行。 ##### 3. JDK、JRE与JVM...

    资深工程师整理面试题:Java

    答:Java 中的 Collection Framework 是一个提供了多种数据结构的集合框架。它包括 List、Set、Map 等接口和实现类。Collection Framework 中的主要类有 ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap...

    Verilog到Java在线翻译器Verilog2Java的设计与实现.pdf

    Verilog到Java在线翻译器Verilog2Java的设计与实现涉及多个关键知识点,这些知识点主要集中在编程语言间的翻译方法、在线翻译器的设计以及协同设计在软硬件开发中的应用。下面将详细阐述这些内容。 首先,Verilog...

    Java语言特性与设计模式.ppt

    (2)框架框架封装了共性问题的解决方案,避免了重复劳动;(3)工具自动化工具的使用可以大幅度提高效率。 Java语言特性与设计模式是现代计算机科学中最重要的编程语言之一,其设计模式对程序设计语言的发展产生了...

    java程序设计案例教程连习题

    8. **百鸡问题**:这是一个经典的数学问题,可以通过穷举法或动态规划解决。设定公鸡、母鸡和小鸡的数量变量,确保它们的总价值等于100元,总数量等于100只,输出所有满足条件的组合。 9. **斐波那契数列**:定义一...

    java:JAVA中的共性

    java:JAVA中的共性

    基于antd4二次封装的form组件

    在React开发中,Ant Design(简称antd)是一个广泛使用的组件库,它提供了丰富的UI组件,大大简化了前端开发过程。本话题聚焦于“基于antd4二次封装的form组件”,这通常意味着开发者为了满足特定项目需求,对antd...

    《Java程序设计大学教程》课件

    1. **Java语言概述**:Java是一种面向对象的、跨平台的编程语言,由Sun Microsystems(现为Oracle公司)在1995年推出。它的设计目标是“一次编写,到处运行”,通过Java虚拟机(JVM)实现平台无关性。 2. **基础...

    java常用的二十三种设计模式

    ### Java常用的二十三种设计模式 #### 1. 工厂模式(Factory) 工厂模式是一种常用的创建型设计模式,它的核心思想是通过一个专门的类(即工厂类)来负责创建对象,而不是直接通过new关键字实例化对象。这种方式...

    java设计的小游戏

    - **Swing或JavaFX**:Java提供的两种主要GUI库,用于创建游戏窗口、按钮、图像等组件。 - **事件处理**:监听用户的键盘和鼠标输入,控制游戏逻辑。 3. **游戏循环**: - **主循环(Game Loop)**:游戏的核心...

    Map组件二版封装设计文档1

    Map组件的二次封装设计是为了解决在不同业务场景下,如销售端、商城、数据可视化、TMS等,地图功能需求日益复杂的问题。通过对高德地图API的封装,该组件旨在降低开发者的学习成本,简化地图相关功能的开发流程,...

    java设计模式之禅

    初级程序员可以学习如何编写优秀代码,高级程序员可以全面理解设计模式及Java的高级技巧,而顶级系统分析师则可以通过本书找到解决项目共性问题的方法。 书中按照25章详细介绍了众多设计模式,从基础的策略模式到...

    Java 语言基础知识教程 PPT演示文稿

    - **平台无关性**:Java的“一次编写,到处运行”特性,得益于Java字节码和Java虚拟机(JVM)。 - **多线程**:Java支持多线程编程,可以同时执行多个任务。 - **动态内存分配**:Java自动管理内存,程序员无需...

Global site tag (gtag.js) - Google Analytics