×
提示:
×
提示:
请:
谢谢!
Toggle navigation
技术头条
最新
读点非技术
我也分享
赞过
我的
IT技术博客大学习
微博登录
2
S.O.L.I.D.类设计原则
(chenpeng.info)
【简介】
本文是由敏捷宣言签署人之一、《 Clean Code(代码整洁之道)》一书的作者Robert C. Martin为他的《Applying Principles and Patterns》这本书搜集整理而来。
单一责任原则(SRP)
只有一个理由去修改一个类。例如,如果一个业务规则的改变会导致这个类的修改,那么,数据库、界面、报表格式或系统任何其它的部分的改变都不该迫使这个类做修改。
开发/关闭原则(OCP)
软件构成(类,模块,方法等)向扩展行为开放,向修改行为关闭。
Liskov替换原则(LSP)
子类必须能够用来当作基类使用。如果类A继承类B,任何能使用A的地方,B也同样可以使用。例如,是否还记得,正方形可以看作是矩形!当进行扩展时:前提条件不许绕过,后置条件不能放宽限制,可见常量不能被修改(?)。常量:在扩展之前或之后,用户都需要依靠这个常量来传递信息。正确的使用set形式的继承关系。不遵守set语义是非常危险的。归纳:使用超类的引用的任何上下文中也可以使用其子类的引用替代。这个原则极大的限制了在纯扩展(继承)机制里可以做的事情。不遵守会带来风险。
接口分离原则(ISP)
一个类对另一个类的依赖应该限制在最小化的接口上。
反向依赖原则(DIP)
依赖抽象层(接口),而不是具体类。
其它重要原则
Demeter定律
也被称做封锁信息原则:只跟朋友交流
一个对象O的任何一个方法M只能调用下列类型的对象的方法:
它自己
它的参量
它创建/实例化的对象
它的直接组件对象
好莱坞原则
不要调用我,我会调用你的。
不要自我重复(DRY)
去掉重复代码。
对接口编程,而不是对实现
反向依赖的另外一种说法。
你不需要它(YAGNI)
不要添加你“认为以后可能有用”的代码。只在“事到临头”时才添加代码。
简单化,傻瓜化(KISS)
让它能工作的最简单的方法是什么?
点击查看原文 >>
由
@技术头条
2017-02-05 14:38 / 0个评论
赞过的人:
@技术头条
@IT技术博客大学习
要不要再学学下面的文章?
0
领域驱动设计DDD在B端营销系统的实践
(tech.meituan.com)
领域驱动设计(DDD)在复杂业务系统中的应用非常有效,特别是在 B 端营销系统中。本文分享了美团如何通过 DDD 实践,优化营销系统的架构与设计,提升业务应对能力。想了解如何应对复杂业务需求的变化?千万别错过!
by
@技术头条
2024-09-09 23:41
查看详情
0
防呆设计
(ixyzero.com)
设计中的“防呆”理念,是为了防止用户出错,让复杂的操作变得简单直观。本文介绍了防呆设计的10大原则,如自动化、顺序操作、视觉标识等,帮助产品经理和设计师更好地为用户提供无错体验。想要提升用户体验,降低操作错误率?快来了解这些设计技巧!
by
@技术头条
2024-09-08 23:28
查看详情
1
IM服务器设计-如何解决消息的乱序
(www.codedump.info)
IM消息需要面对的另一个难题:如何保证收到的消息不乱序。下面先展开看看要解决这个难题有哪些障碍。
by
@技术头条
2024-03-21 23:00
查看详情
1
IM服务器设计-网关接入层
(www.codedump.info)
IM服务系列文章: IM服务器设计-基础 IM服务器设计-消息存储 网关接入层负责维护与客户端之间的长连接,由于它是唯一一个与客户端进行直接通信的服务入口,
by
@技术头条
2024-03-21 23:00
查看详情
1
IM服务器设计-消息存储
(www.codedump.info)
这部分专门讲述IM消息存储的设计。消息存储的难度在于,要考虑以下的场景:
1、离线消息存储。即发送消息时对方不在线该怎么处理。
2、单聊、群聊消息。
3、随着用户量越来越大,应该以后如何扩展。
by
@技术头条
2024-03-13 13:33
查看详情
1
IM服务器设计-基础
(www.codedump.info)
IM做为非常经典的服务器系统,其设计时候的考量具备代表性,所以这一次花几个篇幅讨论其相关设计。
主要内容相当部分参考了 一套海量在线用户的移动端IM架构设计实践分享一文,在此之上补充了更好的消息存储设计以及集群设计。
by
@技术头条
2024-03-13 13:32
查看详情
1
真实世界的Go设计模式 - 对象池模式
(colobu.com)
对象池(object pool pattern)是一种设计模式。一个对象池包含一组已经初始化过且可以使用的对象,而可以在有需求时创建和销毁对象。池的用户可以从池子中取得对象,对其进行操作处理,并在不需要时归还给池子而非直接销毁它。这是一种特殊的工厂对象。
若初始化、实例化的代价高,且有需求需要经常实例化,但每次实例化的数量较少的情况下,使用对象池可以获得显著的效能提升。从池子中取得对象的时间是可预测的,但新建一个实例所需的时间是不确定。
另外,利用对象池,我们可以重用对象,减少对象的分配,对于垃圾回收的编程语言,也是一种提高性能的手段。
by
@技术头条
2023-09-10 23:38
查看详情
1
真实世界的Go设计模式 - 原型模式
(colobu.com)
*原型模式(Prototype Pattern)是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。
如果你有一个对象,并希望生成与其完全相同或者类似的一个复制品,你该如何实现呢?首先你必须新建一个属于相同类的对象,或者类似的对象,然后你必须遍历原始对象的所有成员变量,并将成员变量值复制到新对象中。在Go生态圈中,我们常常使用下面的库来做这份工作。
by
@技术头条
2023-09-10 23:32
查看详情
1
架构设计 the Easy Way
(blog.alswl.com)
前几日,我在团队内部举行了一场技术分享,我介绍了关于架构设计的最佳实践。将这些实践凝练成了 20 字口诀:架构看问题、需求看用例、设计看模型、细节看时序。
我将顺口溜转到了 Twitter,不少朋友对这些顺口溜产生了浓厚兴趣,希望深入了解。因此,我将我分享中的观点扩展成了这篇文章。
by
@技术头条
2023-07-30 17:40
查看详情
1
真实世界的Go设计模式 - 工厂模式
(colobu.com)
工厂模式是一种创建型模式,就是用来创建新对象的一种设计模式,它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。
23种设计模式中包含抽象工厂模式,工厂方法模式,其他也有人总结出简单工厂模式。这个工厂大量的依赖接口、抽象类和具体的类实现。在Go中,才不会有这么复杂的工厂创建模式,Go中最常见的工厂模式类似简单工厂模式,而且一般都是通过New或者NewXXX来实现。
by
@技术头条
2023-07-30 17:36
查看详情
使用微博登录,分享你的文章到本站
评论:
提交评论
近一周被赞排行
分享文章被赞得多,您就会出现在上面。还能给您微博带来新粉丝哦!