携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情
设计原则
单一职责原则 Single Responsibility Principle
一个类或者模块只负责完成一个职责(或者功能)
开闭原则 The Open/Close Principlee
对于扩展是开放的,但是对于修改是封闭的
里氏替换原则 Liskov Substitution Principlee
子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不变及正确性不被破坏
接口隔离原则 Interface segregation principle
不应强迫使用者依赖它们不用的方法, 设计职责单一的小而美的接口
依赖反转原则 Dependency Inversion Principle
高层模块(high-level modules)不要依赖低层模块(low-level)。高层模块和低层模块应该通过抽象(abstractions)来互相依赖。除此之外,抽象(abstractions)不要依赖具体实现细节(details),具体实现细节(details)依赖抽象(abstractions)。
迪米特法则 Law of Demeter
不该有直接依赖关系的类之间,不要有依赖;
DRY KISS YAGIN原则
让程序保持简单,单一。 不要重复自己包括:逻辑重复、功能语义重复、代码执行重复的代码
设计模式
单例模式 Singleton Design Pattern
限制类实例化次数只能一次,一个类只有一个实例,并提供一个访问它的全局访问点。
工厂模式(Factory Design Pattern)
在不暴露创建对象的具体逻辑,而是将逻辑进行封装。
建造者模式,构建者模式,生成器模式(Builder Design Pattern)
将一个复杂对象的构建与他的表现分离,使得同样的构建过程可以创建不同的表示
代理模式 Proxy Design Pattern
不改变原始类代码的情况下,通过引入代理类给原始类附加功能
装饰器模式,包装器模式 Decorator Design Pattern
能够在不更改源代码自身的情况下,对其进行职责添加
适配器模式 Adapter Design Pattern
解决对象之间的接口不兼容的问题,通过适配器模式可以不更改源代码的情况下,让两个原本不兼容的对象在调用时正常工作
组合模式Composite Design Pattern
又叫 “部分整体” 模式,将对象组合成树形结构,以表示 “部分-整体” 的层次结构。通过对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性。
观察者模式,发布-订阅模式Observer Design Pattern
当其中一个对象发生变化时,所有依赖于它的对象都会得到通知。
模版模式Template Method Design Pattern
父类中定义一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤
策略模式Strategy Design Pattern
该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户
职责链模式Chain of Responsibility Pattern
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
状态模式State Design Pattern
允许一个对象在其内部状态改变的时候改变其行为,对象看起来似乎修改了它的类,通俗一点的将就是记录一组状态,每个状态对应一个实现,实现的时候根据状态去运行实现。
迭代器模式Iterator Design Pattern
提供一种方法顺序访问一个聚合对象中的每个元素,并且不需要暴露该对象的内部。
访问者模式Visitor Design Pattern
表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。
备忘录模式Snapshot Design Pattern
在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便恢复到原先保存的状态