GRASP概述 GRASP,全称General Responsibility Assignment Software Patterns,译为”通用职责分配软件原则“,包含以下原则和模式 控制器(Controller) 控制器模式用来接收和处理系统事件的职责,一般应该分配给一个能够代表整个系统或者单个用例场景 一个用例控制器应该用来处理一个用例的所有系统事件 控制器对象定义为UI展现层之上的第一个对象负责接收和协调系统操作 控制器本身不应该包含太多逻辑和功能 在N-Layer多层架构应用程序中,控…
 SOLID面向对象的五个设计原则对于开发人员非常重要,其身影在任何大中型软件项目中随处可见,建议必须掌握并灵活应用.此五原则分别为:     单一职责原则(Single Resposibility Principle)     开放封闭原则(Open Closed principle)     里氏替换原则(Liskov Substitution Principle)     接口分离原则(Interface Segregation Principle)     依赖倒置原则 (Depende…
在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据7条原则来开发程序,从而提高软件开发效率,节约软件开发成本和维护成本. 这7条原则分别是:开闭原则.里氏替换原则.依赖倒置原则.单一职责原则.接口隔离原则.迪米特法则.合成复用原则. 接下来是对这7个原则的详细介绍. 开闭原则(OCP,Open Closed Principle) 定义 开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他…
依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现. 简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合.   面向过程的开发 上层调用下层,上层依赖于下层,当下层剧烈变动时上层也要跟着变动,这就会导致模块的复用性降低而且大大提高了开发的成本. 面向对象的开发很好的解决了这个问题 一般情况下抽象的变化概率很小,让程序依赖于抽象,实现的细节也依赖于抽象.即使实现细节不断变动,只要抽象不变,客户程…
首先,我们看下开放-封闭原则(Open-Closed Principle,简称OCP)的概念: 是指软件实体(类.模块.函数等)应该可以扩展,但是不可修改. 任何新功能(functionality)应该通过添加新class.属性或方法来实现,而不是通过改变现有的代码. 实现准则: 在继承子类中实现新的功能 允许客户端(clients)访问带有抽象接口的原始基类 为什么要遵循开放-封闭原则? 如果不遵循OCP原则,一个类或函数总是允许添加新的逻辑,那么我们不能不重新测试新的逻辑依赖的整个类 如果不…
面向对象设计的目标之一在于支持可维护性复用,一方面需要实现设计方案或者源码的重用,另一方面要确保系统能够易于扩展和修改,具有较好的灵活性. 常用的设计原则有七个原则: 1.单一职责原则(single responsibility principle,SPR) 一个类只负责一个功能领域中的相应职责.(或者可以定义为:就一个类而言,只有一个原因能够引起它变换). 单一职责原则是实现高内聚.低耦合的指导方针,是最简单的也是最难运用的原则. class Chart { private String ty…
面向对象的设计原则 是 OOP 编程的核心,但是我看到大多数 Java 程序员都在追求诸如 Singleton 模式,Decorator 模式或 O​​bserver 模式之类的设计模式,而对学习面向对象的分析和设计没有给予足够的重视.了解诸如抽象,封装,多态和继承之类的面向对象程序设计的基础很重要.但是,与此同时,了解面向对象的设计原则也同样重要.它们将帮助您创建简洁的模块化设计,将来可以轻松进行测试,调试和维护. 我经常见过各种经验水平的 Java 程序员和开发人员,他们要么从未听说过这些…
这部分增加一点自己的感想,OO设计原则下面讲述的很清晰;看完之后有点感想如果我们在实际开发当中能够把这些原则熟烂于心的话那我们的代码质量和个人能力会有很显著的提神.根据自己的实际经验看很多开发者在开发过程中很多基本的知识确实没有熟烂于心导致开发的时候只有基本的内容.我所在的项目就是代码接口各种乱,可读性和可维护性特别差:当然自己在开发的时候也都没有做到,在后面的工作中尽量避免 前面发表了5篇OO设计原则的文章,在这里我将这个5个原则如何在我们设计过程进行应用进行一下总结, 这是我通过阅读和学习很…
开闭原则:指的是一个软件实体应对对扩展开发,对修改关闭(Software entities should be open for extension, but closed for modification).这个原则是说在设计一个模块的时候,应对使这个模块可以在不被修改的前提下被扩展,换言之,应对可以不必修改源代码的情况下改变这个模块的行为. 根据开闭原则,在设计一个软件系统模块(类,方法)的时候,应该可以在不修改原有的模块(修改关闭)的基础上,能扩展其功能(扩展开放). - 扩展开放:某模块…
说到框架设计,打心底都会觉得很大很宽泛,而 API 设计是框架设计中的重要组成部分.相比于有很多大佬都认可的面向对象的六大原则.23 种常见的设计模式来说,API 设计确实缺少行业公认的原则或者说设计范式. 不过,没有公认不代表没有.无论是对外提供类库还是提供 url 形式的 API,为了使用者良好的使用体验,依然也是有可以借鉴和参考的经验的. 本文使用 多种语言 编写,请选择你喜欢的语言: 中文: 好的框架需要好的 API 设计 —— API 设计的六个原则 - walterlv Englis…