企业级应用架构设计
文章平均质量分 77
Mr___Ray
这个作者很懒,什么都没留下…
展开
-
软件设计原则——编码向量
文章目录编码向量KISS-Keep It Simple,StupidYAGNI——You Ain't Gonna Need ItDRY——Don't Repeat Yourself说,别问——Tell,Don’t Ask编码向量软件上,“向量”指代同时表达大小和方向的原则。在这种情况下,我们认为方向比大小优先。对于这里提到的原则,我们应该关注它们指出的方向而不是引入代码库的具体模式。这些原则用...原创 2018-10-17 21:12:36 · 451 阅读 · 0 评论 -
业务逻辑模式——领域模型模式
文章目录领域模型模式模式概论何时选择领域模型模式实践领域模型的利弊和细节领域模型模式领域模型通常会在DDD解决方案里使用,但并非只能在这里使用,它只是一个普通的设计模式。领域模型(Domain Model,DM)模式建议架构师把注意力放在系统的预期行为以及使之工作的数据流上。理想情况下,在领域专家的悉心帮助下了解真实系统,然后尝试以类的形式来重现它。模式概论领域模型不用于由一组相关的类构成...原创 2018-12-14 11:35:08 · 2854 阅读 · 0 评论 -
业务逻辑模式——贫血领域模型(反)模式
文章目录贫血领域模型(反)模式模式概论从数据库推断模型可能会导致贫血ADM是一个模式还是反模式?贫血领域模型(反)模式领域模型的标志是与对象关联的行为。而“到底哪个行为”是领域模型模式的支持者经常听到的反对声音。领域模型模式有时候会与另一个被称为贫血领域模型(Anemic Domain Model,ADM)的模式形成对比。模式概论在贫血领域模型里,所有对象仍然遵循现实世界领域实体的命名规范...原创 2018-12-14 11:33:15 · 366 阅读 · 0 评论 -
业务逻辑模式——事务脚本模式
事物脚本模式事务脚本(Transaction script,TS)模式可能是最简单的业务逻辑模式,它完全是过程式的。1、模式概论TS鼓励你跳过任何面向对象设计,把你的业务组件直接映射到所需的用户操作上。你关注用户可以通过表现层完成的操作,为每个请求写一个方法。这个方法被称为“事务脚本"。“事务”这个词在这里通常是指你想执行的业务。“脚本”这个词是指你把一组系统执行的操作(也就是脚本)与...原创 2018-12-13 09:19:42 · 1905 阅读 · 0 评论 -
表现层——用户体验优先
文章目录用户体验优先为什么关注交互基于任务的设计目标是找到最佳的做事方式为每个界面创建一个视图模型类用户界面仅仅是是用户体验的一部分用户体验专家的职责用户体验开发的顺序,使用的工具为什么你需要在交互上花时间如何实现杀手级用户体验把交互变成视图把视图变成原型现在告诉客户它只是一个原型MVC、MVP、MVVM以及其他模式用户体验优先对于一个应用程序来说,最有趣的事通常发生在领域模型层里,这里也是你...原创 2018-11-08 16:24:56 · 994 阅读 · 0 评论 -
设计架构——领域驱动设计(DDD)
文章目录领域驱动设计(Domain-Drive Design)的真正附加价值怎么使用DDD使用DDD——分析部分使用DDD——策略部分是否选择DDD要考虑的元素领域驱动设计(Domain-Drive Design)的真正附加价值DDD的目的——应对软件核心复杂性。DDD的核心——消化特定业务领域的知识并创建忠实反映它的软件模型是什么让DDD如此强大却又如此容易出错?——是上下文。业务领域...原创 2018-10-24 23:17:23 · 305 阅读 · 0 评论 -
软件设计原则——为什么要面向接口编程
文章目录为什么要面向接口编程如果有以下状况解决为什么要面向接口编程如果有以下状况public class SomeComponent{ public void DoWork(){ Logger logger = new Logger(); var data = GetData(); logger.Log(data); }}SomeComponent类与Logger...原创 2018-10-14 18:15:10 · 933 阅读 · 0 评论 -
编写优质软件——代码可扩展性的几种实施方式
文章目录代码可扩展性的几种实施方式基于接口的设计插件架构状态机代码可扩展性的几种实施方式《ThePragmaticProgrammer》(Addison-Wesley,1999)一书的作者DaveThomas和AndyHunt曾经说过,所有编程工作都是维护的一种形式。一个类在首次键入几分钟后就会进入无限的维护循环。大多数时候,维护要求把现有代码库重构成模式或者更简洁的设计。然而,维护的能力具备...原创 2018-10-22 15:26:37 · 2475 阅读 · 0 评论 -
编写优质软件——测试实战
文章目录软件测试的常见实践测试驱动开发(TDD)—先写测试后写测试代码覆盖率应该测试哪部分代码——设计领域层的优先自动化单元测试的构建——使用Pex插件(白盒)软件测试的常见实践虽然每个人都同意测试对于软件项目来说很重要,但就每个人自己处理测试的方式而言仍有一些极具争议的问题。这些开放性的问题牵涉到测试的角色,什么时候写,测试的数量和位置等。测试驱动开发(TDD)—先写测试测试驱动开发(T...原创 2018-10-22 14:43:29 · 195 阅读 · 0 评论 -
软件设计原则——处理依赖的模式
文章目录处理依赖的模式服务器定位模式适用场景缺点依赖注入模式处理依赖的模式服务器定位模式void Copy(){ Byte byte; var reader = ServiceLocator.GetService<IReader>(); var writer = ServiceLocator.GetService<IWriter>(); ...原创 2018-10-15 16:40:09 · 232 阅读 · 0 评论 -
软件设计原则——SOLID原则
文章目录SOLID原则单一责任原则开放/封闭原则里民代换原则常见代码问题错误示例代码辅助工具接口分离原则依赖反转原则SOLID原则单一责任原则(SRP)开放/封闭原则(OCP)里氏代换原则(LSP)接口分离原则(ISP)依赖反转原则(DIP)对象建模并不容易,而且也不是精确科学。原则的存在大多数情况下告诉你做事的方式.一一给予指导,可能为你指明正确的方向。建模的整个要点是找到正确...原创 2018-10-15 16:00:21 · 1821 阅读 · 0 评论 -
软件设计原则——多用组合少用继承
文章目录组合和继承白盒继承的缺点黑盒对象组合示例RegisteredUser和User的关系对象组合的好处组合和继承实现重用的两个途径:白盒和黑盒重用。白盒基于类的继承,但要承受继承的缺点。黑盒基于对象组合。白盒public class RegisteredUser : User{ ...}继承的缺点派生类继承了父类的上下文,获得父对象状态的某种可见性。随着不同版本派生类的出现...原创 2018-10-15 11:16:46 · 1101 阅读 · 0 评论 -
软件设计原则——软件契约
文章目录软件契约前置条件后置条件不变条件.NET Code Contracts的魔法软件契约契约式设计把软件组件之间的交互描述成契约,权利与义务得到明确表达和强制实施。契约式设计还没得到任何主流编程语言的原生支持。但是,有些框架可以让你在常用的语言里使用它,如Java、Perl、Ruby、JavaScript,当然还有Microso什.NETFramework的语言。在.NET里,你通过....原创 2018-10-18 10:03:58 · 541 阅读 · 1 评论 -
软件设计原则——如果一那么一抛出 模式
如果一那么一抛出 模式if-else-throw 模式: 每个条件语句检查一个用来验证输入值的不同条件。如果条件没有通过验证,代码就会抛出异常。使用这个模式对于构造函数来说特别重要,因为它保证对象的状态是有效的。你不需要在私有方法里使用这个模式,因为这些方法只能从类自身调用,通常也是同一个作者调用。public class Match{ public Macth(string id,st...原创 2018-10-17 21:56:36 · 156 阅读 · 0 评论 -
业务层——把焦点从数据移到任务
把焦点从数据移到任务十年以来,关系型数据建模对于建模软件应用程序的业务层来说是一种行之有效的方式。在.NET的世界里,拐点出现在2000年初,当时越来越多仍把核心业务逻辑嵌入大型机的公司开始利用Microsoft .NET Framework 和Internet的突破对他们的系统进行现代化革新。仅仅几年,体量惊人的复杂性倾泻而出,压在开发者的肩膀上。RAD和关系型建模很自然地开始显得力不从心,...原创 2018-12-17 18:53:44 · 214 阅读 · 0 评论