COLA是Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,也叫“可乐”架构。
注意本架构曾用名SOFA、COPA,以后统一使用COLA这个新名称,带来不便,表示抱歉
更多关于COLA架构的信息:
需要进一步交流的,可以微信咨询: josico-nie
COLA框架包括两个Project,一个是cola-framework里面是框架的核心代码,另一个是cola-archetype是用来生成新应用的Maven Archetype源码。
该Project包含3个Module,cola-core, cola-common, cola-test
该Module是整个框架的核心,里面的主要功能和Package如下:
com
└── alibaba
└── cola
├── assembler \\提供Assembler标准
├── boot \\这是框架的核心启动包,负责框架组件的注册、发现
├── command \\提供Command标准
├── common
├── context \\提供框架执行所需要的上下文
├── convertor \\提供Convertor标准
├── domain \\提供Domain Entity标准
├── event
├── exception \\提供Exception标准
├── extension \\负责扩展机制中的重要概念-扩展(Extension)的定义和执行
├── extensionpoint \\负责扩展机制中的重要概念-扩展点(Extension Point)的定义
├── logger \\提供DIP的日志接口
├── repository \\提供仓储(Repository)的标准
├── rule \\提供业务规则或者叫策略(Rule)的标准和执行
│ └── ruleengine
└── validator \\提供Validator标准和执行
该Module提供了框架中Client Object, Entity Object和Data Object的定义,二方库会依赖该Module。
该Module主要是提供一些开发测试的工具,可以使用TDD来进行开发。
为了提升应用创建的效率,以及保证架构风格和规范被准守。我们开发了创建应用的Maven Archetype,这样只要执行一行命令就可以生成一个基于COLA框架的应用骨架来。
可以按照以下步骤使用COLA Archetype:
下载Archetype
安装Archetype到本地:运行 mvn install
生成应用,比如,要生成一个名为demo应用,只要执行下面的maven 命令:
mvn archetype:generate -DgroupId=com.alibaba.sample -DartifactId=demo -Dversion=1.0.0-SNAPSHOT -Dpackage=com.alibaba.sample -DarchetypeArtifactId=cola-framework-archetype -DarchetypeGroupId=com.alibaba.cola -DarchetypeVersion=1.0.0-SNAPSHOT
启动SpringBoot,首先在demo目录下运行mvn install(如果不想运行测试,可以加上-DskipTests参数)。然后进入start目录,执行mvn spring-boot:run。 运行成功的话,可以看到SpringBoot启动成功的界面
执行测试,生成的应用中,已经实现了一个简单的Rest请求,可以在浏览器中输入 http://localhost:8080/customer?name=World 进行测试。
请求执行成功的话,可以在浏览器中的返回值中看到:"customerName":"Hello, World"。同时观察启动SpringBoot的控制台,可以看到LoggerInterceptor打印出来的日志。
查看生成的demo应用,我们可以看到生成了5个module,分别是demo-controller、demo-client、demo-app、demo-domain、demo-infrastructure。其中demo-client是用来存放RPC调用中的DTO(Data Transfer Object)类,其它四个module分别对应控制层、应用层、领域层和基础实施层。
概览 COLA-framework的module如下: cola-common cola-core cola-test 用maven-archetype生成的代码例子的module情况: demo-app demo-client demo-controller demo-domain demo-infrastructure start 各module介绍 按照数据流的顺序,分别介绍各moduel的
在start模块的pom文件添加依赖 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId>
面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。 提到面向对象,自然会想到面向过程,面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候依次调用就可以了。面向对象则是把构成问题的事务按照一定规则划分为多个独立的对象,
面向对象 程序设计方法 程序设计描述系统如何通过程序来实现的过程,其为一种设计方法与语言实现无关。常见的设计方法有面向流程与面向对象。 面向过程 以程序的过程为中心,采用自定而下逐步细化的方法来实现。常见的面向过程语言有 C、Fortran、Pascall。 面向对象 将对象作为程序的基本单元,将程序分解为数据和操作的集合。常见的面向过程语言有 smalltalk(也是 Objective-C 的
面向对象 三大特性是:封装,继承,多态 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防
之前的文章都是使用Sublime Text来编写 Python 的,主要是为了更好的熟悉和了解 Python ,可是开发效率不高,也不方便,从这章开始,改为使用 Pycharm 了,在之前的篇节集成开发环境(IDE): PyCharm中介绍了 PyCharm ,如果如要激活软件可以通过授权服务器来激活,具体看这个网址。JetBrains激活(http://www.imsxm.com/jetbrai
前面两章我们介绍了函数和struct,那你是否想过函数当作struct的字段一样来处理呢?今天我们就讲解一下函数的另一种形态,带有接收者的函数,我们称为method method 现在假设有这么一个场景,你定义了一个struct叫做长方形,你现在想要计算他的面积,那么按照我们一般的思路应该会用下面的方式来实现 package main import "fmt" type Rectangle st
对象的属性 数据属性:[[Configurable]](可否delete或修改属性特性)、[[Enumerable]](可否被for-in)、[[Writable]](可否修改)、[[Value]] 访问器属性: [[Configurable]]、[[Enumerable]]、[[Get]]、[[Set]], 修改属性: 使用Object.defineProperty( 对象,属性名,描述符对象
解释面向对象 所谓面向对象是跟面向过程有区别的,面向对象简称是oop, 简单来说面向过程就是各种函数,大函数变小函数,调用小函数等等,然而面向对象就是一切皆对象,各种对象互相调用。 记住一件事:类是抽象的模板,实例才是具象的表现。类似于你的DNA和你的性状的表达。 举例说明定义方式。 class Student(object): """docstring for Student.""" d
在Android项目中,通常只有两层:包含MVVM内容的表示层和包含存储库的数据层。从ViewModel直接访问存储库,在将数据传递给视图之前,在ViewModel中处理数据。 所以我的问题是:Android上的usecases/interactors的目的是什么?它们是否相关,或者是否可以完全集成到Android的ViewModel中?