项目架构设计参考资料

4 篇文章 0 订阅
4 篇文章 0 订阅

本文地址:https://blog.csdn.net/t163361/article/details/113888122
最近准备申请新星创作者,需要2000个粉丝关注,觉得文章有用的,请点一下左侧边栏的关注,谢谢。

架构资料

产品面临重构,架构方面的资料查了很多,在这里整体记录下觉的比较好的资料
软件设计模式WIKI

设计模式六大原则

原文链接
单一原则
一个类应该仅有一个引起变换的原则。
个人解析:一个类不应该被各个地方当成不同的东西来使用,StudentClass 就应该当做学生使用,不应该又当学生使用,又当成孩子使用。

开放-封闭原则
对于类、模块、函数,需要做到对扩展开放,对修改封闭。
个人解析:将可变的地方通过面向对象三特性,封装、继承和多态,将不变的地方封装起来,可变的地方用继承和多态,达到实现只需要增加,不需要大量修改,就实现新的功能需求的目的。

依赖倒转原则
高层模块不应该依赖底层模块,各模块需要内聚。抽象不依赖细节,细节依赖抽象。
个人解析:应该对业务逻辑进行抽象,面向接口设计,将公共部分确定,高层和底层都通过接口部分进行交互,而内部只需要关注各种实现就可以。

接口隔离原则
每个接口应该只执行一个功能,使用多个隔离接口代替一个总接口。
个人解析:接口定义的时候应该保持简单易懂,每个接口只执行相对独立的功能。

迪米特法则(最少知识原则)
两个类不需要发生通信,就不应该直接发生相互作用。若其中一个需要调用另一个类,可以添加一个第三者进行转发调用。
个人解析:类应该尽量保持松耦合,如果不需要就应该将类的各种属性封装起来,不对外开放,除非必要否则不应该持有其他类。

合成/聚合复用原则
尽量使用合成和聚合,而不使用继承
个人解析:为了防止继承使用泛滥,应该充分确定类之间的关系,抽象出合适的父类,再合成和聚合父类,降低子类的创建。一定要避免排列组合式的创建过多子类。e.g.游戏类的子类 M厂游戏,N厂游戏。制作商只是一个属性,不应该当成子类划分的依据。

领域驱动开发

领域驱动设计入门书

领域各层划分

DDD与分层架构

模型划分

有四种描述逻辑划分的模型,如下
失血模型
贫血模型
充血模型
胀血模型
贫血,充血模型的解释以及一些经验
说说领域驱动设计和贫血、失血、充血模型
贫血模型/充血模型
领域驱动设计和开发实战

一篇不错的文档和demo

DDD 实现之路

Domain-Driven Design Starter Modelling Process
腾云大佬的文章

Demo

IDDD配套源码 ⭐⭐⭐⭐⭐
IDDD(实现领域驱动设计)这本书的配套源码,结构清晰,推荐深度理解
完整基于DDD设计的示例项目⭐⭐⭐⭐⭐
java版的demo,质量很高⭐⭐⭐⭐
微软的电商Demo
Equinox Project
DevPack
Sample .NET Core REST API
DDD starter for .net
Domain-Driven-Design-Example

示例讲解

下面四篇文章讲的非常好,强烈建议全看完⭐⭐⭐⭐⭐
阿里技术专家详解 DDD 系列 第一讲- Domain Primitive
阿里技术专家详解DDD系列 第二讲 - 应用架构
阿里技术专家详解DDD系列 第三讲 - Repository模式
阿里技术专家详解DDD系列 第四讲 - 领域层设计规范
阿里技术专家详解DDD系列 第五讲:聊聊如何避免写流水账代码

不错的DDD系列文章

句幽
知多少

领域模型名词个人理解

Repository

仓储的意义在于抽象的领域模型往往不适合存储,通过把存储抽象出来,来保持领域模型的完整性

防腐层

用来对第三方服务器做隔离,防止业务逻辑和第三方接口强耦合,隔离第三方变动对业务逻辑的影响,同时通过mock防腐层方便实现对业务逻辑测试

MVVM

个人理解:

  • VM和V层划分的依据,VM层可以完整跑通测试,也就是V层随意换,VM的逻辑执行不受影响

Loxodon Framework

项目中使用的MVVM框架,功能强大,文档写的非常好。对理解MVVM和领域驱动开发很有帮助
帮助文档

Unity中的新结构

Unity之前有实体,组件的概念,后来又出了个ECS(DOTS),里面也有实体,组件的概念,其实两个是不一样的。原有的是属于下面提到的组合模式,组件里面是包含方法的。而新的ECS里面的组件其实只包含数据,所有对数据的操作都放到的系统里面。

组合模式

对应Unity原有的GameObject/Component模型

组合模式包含下面两个分类:

透明组合模式 把组合(树节点)使用的方法放到统一行为(Component)中,让不同层次(树节点,叶子节点)的结构都具备一致行为。
安全组合模式 统一行为(Component)只规定系统各个层次的最基础的一致行为,而把组合(树节点)本身的方法(管理子类对象的添加,删除等)放到自身当中。
个人理解Unity更偏向透明组合模式,如有理解错误欢迎在下面讨论区讨论

ECS

ECS说明
ECS概念详解
Unreal使用ECS
DOTS
Unity DOTS 中的 ECS
DOTS最佳实践
DOTSSample
Unity DOTS:使用ECS进行GamePlay开发
个人理解:

  • DOTS的基础是具有数据结构和可对该数据进行操作的系统。这意味着一般来说,组件(component)中不应有方法,系统(system)中也不应有数据。

RUST

Rust是个新的语言,放到这里是感觉最近的一些新技术都是更偏向机器设计的,都是在面向机器的特性去设计。比如ECS的数据和方法分离是为了能让数据内存连续。而Rust是基于70%的安全漏洞都是因为内存导致的,而把内存给严格管控起来。
不管是ECS还是Rust在写的过程中的感受,其实已经部分脱离了对现实世界的理解,而更多的面向机器的底层去设计结构,放弃了一部分编写时的便利性。
入行的时候是用的C++,在经历了野指针和内存溢出的苦逼,以及C#对内存的管控,erlang完善的沙盒机制后,从心理上就不再想写C/C++类的程序。Rust给了我一个选择,当需要些底层的代码时,可以抛弃C/C++,看好Rust。

个人感悟:

1.各种分层,分离业务代码,其实都希望达到可以进行单元测试

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值