软件设计-乱弹

   关于软件设计,还是想多说几句,下面是本人的个人见解,可能部分观点纯属虚构。
   首先设计思想上,架构上来说,逻辑架构+运行架构,至于物理架构本人体会不深,数据架构在中间件设计上用得少;面向对象来说,对象+协作构成组件,然后组件+协作构成系统(更大组件);其实再说简单实际点,就是领域模型+线程模型。
   来张图:


   举个具体例子吧,ThreadPoolExecutor,初步领域模型就是线程池、任务、工作者,初步线程模型就是多个并行的worker线程;算法逻辑上再细化,多余的任务存起来,然后由工作者取出处理,推导出还需要一个队列,线程模型不变;根据你的逻辑继续这个过程。
   来张图(老图了):

   再深挖点对象协作,来串一串设计原则,外部编程用到某个组件(对象),是调用接口(依赖倒转),接口提供内聚的服务(单一职责、接口隔离);
   组件内部在继承Abstract时,不是覆写父类方法(里氏代换),否则考虑组合方式(组合优于继承),实现接口来扩展功能(开闭原则),最后减少不必要的协作,即低耦合(迪米特法则)。
   设计模式的图就不来了,模式有很多,对象模式、架构模式、线程模式,又罗嗦了好几句。

   当然上面的东西,在你研究中间件时比较有用,当然做个小系统也能用上,当然现在已经是大规模分布式的时代,面向服务的设计更多见,服务的独立开发、构建、部署、测试(编不下去了);

   多线程跟分布式有不少相通的,线程协作类似节点协作;再细说点,协作比如map-reduce(生产-消费),负载比如加权随机,路由比如注册中心,高可用比如raft复制集。
  最后再说几句,应用系统跟中间件关注点还是差别很大的,从架构视图上就能看出来 没了。

转载于:https://my.oschina.net/lobo/blog/855288

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值