常见的场景:
1.软件开发就是一系列的处理器,类似与硬件的产品构架,如输入输出,处理器,显示器,路由器,网关,连接线,适配器等常见的计算机组件。软件的开发就是采集数据,路由数据,处理数据,显示数据等一系列的数据操作。所以软件的架构设计思想完全可以采用硬件的开发思想进行抽象化的开发。
一些杂想:我们可以了解计算机体系结构,学习X86计算机设计思想以及操作系统对其进行管理的思想,采用软件对其进行模拟,研发虚拟机作为我们自定义产品的平台,运行在其上保证开发的进度,小到项目大到新语言的研发,完全可以借鉴计算机硬件的一些设计思想进行模拟,毕竟硬件的思想超前于软件的设计思想,也比较容易理解。
2.软件开发过程:
函数---服务类----组件---模块----服务
同构系统------------------------异构系统
SOA:面向服务的架构 通信采用XML+HTTP=SOAP 协议
ESB:面向消息的架构 通信采用总线技术,消息机制 消息
3.代理模式
不直接找目标对象,对于客户端调用来说,采取代理对象更加安全放心(类似于中介机构,省去我们直接找目标要快,安全,只不过付点代价)
常用场景:
安全,日志,远程对象服务,缓存Cache等
种类:
静态代理:需实习多个接口
动态代理:只需要一个接口即可(自己不需要写代理类,采取JDK提供自动生成代理类 字符串拼接 )
总结:代理一般是对客户层而言,采取代理机制的目的就是采取单一指责的原则,写业务的人员与写安全等其他附加逻辑的代码很好的隔离开来,相互之间不影响,当对于客户端是透明的(从抽象的角度都一样),算是一种代码的增强。