中规模软件中象象间协作关系够满足需软件规模扩复杂度升时候面象技术强调协作表现出极端特点-耦合度太高导致复杂度时候需种新方法弥补面象技术弱点规模软件特点规模软件特点复杂度较典型例子集成性项目软件系统需种样硬件遗留系统外部接口整合起间遇硬件接口操作系统语言台数库消息中间件网络介质系统变非常复杂面象技术特点通象间职责分工高度协作完成务样处代码量较少系统布局合理重程度高象数量增加时候象间高度耦合关系会系统变复杂难理解前问题方法采包(请参考拙作面象软件开发中包相关讨)作容器组织象象间赖性转化包间赖性种方法听起道理实际中会出现难解决问题包仅仅容器意味着象组织意包间赖关系设计取决象赖外包设计象样缺乏统风格统风格正规模软件设计必须样效改进系统理解性点非常重面组件编程面组件编程缩写COPCOPOOP补充帮助实现更加优秀软件结构组件粒度需取决具体应COP中重概念:服务服务(Service)组接口供客户端程序例验证授权服务务调度服务服务系统中部件相互调接口组件组件(Component)实现组服务外组件必须符合容器订立规范例初始化配置销毁COP 种组织代码思路尤服务组件两概念文会提Spring框架中采COP思路系统作组件通定义组件间协作关系(通服务)完成系统构建样做处够隔离变化合理划分系统框架意义定义组织组件方式理解组件组件新概念Java中javaBean规范EJB规范典型组件组件特点定义种通处理方式例JavaBean 拥视特性样通工具实现JavaBean视化EJB规范定义企业服务中特性EJB容器够符合EJB规范代码增添企业计算需力例事务持久化池等组件起象进步通规范引入通规范够组件添加新力(面讨)组件添加限制例需实现EJB接口讨组件相关问题:组件粒度组件粒度系统架构息息相关组件粒度确定系统架构确定规模软件中组件粒度仅相普通象规模系统说组件包括十甚百象COP技术系统说需正确定义组件粒度较定义粒度方法核心流程进行分析针接口接口实现分离COP基础没接口实现分离没COP接口高度抽象特性组件够独立抽取出影响系统部分接口实现分离处:1模块组件象间解耦2轻松抽换实现修改客户端3户需解接口需解实现细节4增加重性IOCIOC Inversion of Control简称原理基OO设计原莱坞原(The Hollywood Principle):访问访问说组件动(Passive)组件初始化调容器负责IOC种实现类型包括基方法参数调Methodbased (M) IoC组件传递方法调基接口Interfacebased (I) IoC(通常称类型1)接口声明组件间赖性例Serviceable Configurable基Setter方法Setterbased (S) IoC(通常称类型2)setter方法设置组件间赖性基构造函数Constructorbased (C) IoC(通常称类型3)Martin FowlerIOC模式称Dependency Injection模式IOC框架开发基原理开源软件中少容器类框架采IOC思路组件污染IOC 第类型中组件需实现特定接口某类集成组件受约束(称Invasive)例组件移植便种情况组件需赖特定容器典型EJB组件法脱离容器单独存组件受约束两种情况属组件污染理想组件专注身工作组件没额外逻辑种标准目前部分代码符合目前开源软件界出现轻量级容器框架典型文提PicoContainerspring定位提供组件理统模式组件单独放容器中容器仅仅组件提供额外功组件身没直接赖什说接口继承重原接口更加灵活组件赖性更弱样目前种做法采标记性语言实现接口更灵活度例基xml配置文件J2SE15中引入属性组件测试组件容器赖脱离组件测试提供环境测试节中讨容器测试较麻烦原面说组件污染问题例 spring框架中组件标准JavaBean直接编写代码设置组件属性定义组件间赖关系(适动化测试)项工作交spring容器(适开发部署)组件测试测试分类中属集成测试理解服务讨组件时谈组件粒度问题组件粒度仅仅限单象时候构成组件象中象处组件部组件交互象需外部组件进行交互种象起服务作设计模式中种设计称Facade模式OO语言中相接口概念喻服务订立组件组件间契约种契约稳定(果业务需求稳定)会着组件部变化发生变化理解点非常容易提供户认证组件服务户进行认证授权组件部采LDAP关系数库存放户信息服务说没差样做处组件间够种稳定方式存组件部变化扩散整软件系统二软件设计会转重点设计组件间服务组件实现细节会隐藏起助设计者更握软件全局架构助分工细化服务什新颖概念RPCIDL类似技术谈服务侧重架构理念涉具体技术点SOAWebService关系类似-SOA结构性概念WebService实现SOA种适合技术 服务实现接口原服务种技术:JMSWebServiceRPC简单方法调出服务稳定性考虑应该服务具体技术绑定起样会服务发生变化性增Java语言中接口具极灵活性接口实现普通Java接口较选择样做话许够远程调Web服务类功紧原服务适配器客户端直接接口通适适配器普通接口服务转换特定技术实现服务
图示普通接口通适配器模式转换成特定技术相关服务JMX技术中采种方式JMX台够普通服务端口通适配器进行转换适种协议例httpsocksnmp等等AOP技术服务帮助文章讨AOP技术里重复容假设已拥基AOP概念qca网站AOP做简单整理 AOP作OO技术补足够种优雅方式处理系统横切点服务层面应AOP绝佳位置:
图中普通户注册服务通AOP动态添加种样力AOP提供处够通简单代码服务添加功服务编写代码节省代码量二横切点分离出样服务仅保留核心代码提高系统模块化程度点模块化增加服务动态增加删功成例通配置动态新Aspect添加户注册服务服务测试服务测试测试分类中属接受测试服务概念引入动化接受测试变容易规模软件设计中业务流程涉种组件通服务介面相互协作测试重点回前讨组件粒度问题果时编写出测试代码繁琐说明组件设计粒度太果组件粒度太会发现测试代码根法编写服务理服务理较话题方面规模系统中然通组件服务形式够降低系统复杂度服务然需进行理方面服务状态服务性需监控理规模应说必须服务需种理形式JMX规范提出目种组件进行统理阐述类似处JMX分规范远程接口两部分J2SE15版中JMX已纳入J2SE范畴中兴趣读者参考sun相关文档软件总线软件工厂直目前止软件开发然属手工作坊阶段果制造业水相应话基处蒸气机发明前水着软件开发技术发展软件开发象制造业样步入工业时代软件开发说机器然代码代码代开发员编码活动具手工编码更高生产力高产量机器描述成现代化软件工厂软件工厂底什?解软件工厂需先解软件总线概念COP仅仅提出系统划分基础构成完整应光组件服务够需组件服务种效方式组织起文章种组织性代码称 Fabric结构组织意思文章中称软件总线(bus)
软件总线什?计算机总线样负责组件中传递信息流组件组织起完成具体务总线抽象概念实际中总线具体技术构成例总线段代码负责调组件总线消息系统负责收集分派消息总线工作流系统负责系统信息流转总线JMX负责消息路目标组件总线实现技术什总线特点采种松耦合方式组件组织起样总线身挂接总线组件松耦合组件挂接总线形式前讨服务服务适配器做事情例目前软件总线三种实现:直接调远程调WebServiceMOM工作流根应系统特点采总线实现例调总线适流程较明确应流程硬编码变化起相麻烦工作流总线适流程较灵活需复杂分支干预MOM总线适型分布式异构应应间种松散方式进行协作采取种总线实现方式组件服务变变化服务适配器MOM服务适配器工组流服务适配器MOM服务适配器工作消息中容翻译POJO调服务工作流服务适配器基前工作流状态调样形成系统架构相稳定松散耦合组件发生变化总线技术发生变化服务总线规范稳定整体软件系统稳定服务总线规范软件组织核心竞争力正软件总线目软件工厂组件软件总线基础发展根组件软件总线技术特点定义系列理活动提高开发效率软件工厂定义软件质量框架种实现方式软件组织说根身研发特点定义软件工厂构成非常重具体容包括理实践选择组件积累软件总线技术实现系列文章中推荐前两项实践属理实践范畴容第三项实践偏重建立软件工厂底
层支撑框架软件工厂概念代表种新软件开发模式优势够技术理结合起提高生产力
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档