今天是:
带着程序的旅程,每一行代码都是你前进的一步,每个错误都是你成长的机会,最终,你将抵达你的目的地。
title

设计模式原则

设计模式的六大原则

1、开闭原则(Open Close Principle)

开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。

2、里氏代换原则(Liskov Substitution Principle)

里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。—— From Baidu 百科

3、依赖倒转原则(Dependence Inversion Principle)

这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle)

这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。

5、迪米特法则(最少知道原则)(Demeter Principle)

为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、合成复用原则(Composite Reuse Principle)

原则是尽量使用合成/聚合的方式,而不是使用继承。

 

设计模式类别


​​​抽象文档(Abstract Document)
抽象工厂(Abstract Factory)
主动对象(Active Object)
无环访问者(Acyclic Visitor)
适配器(Adapter)
聚合微服务(Aggregator Microservices)
大使(Ambassador)
API 网关(API Gateway)
安排/执行/断言(Arrange/Act/Assert)
异步方法调用(Async Method Invocation)
阻塞(Balking)
桥接(Bridge)
建造者(Builder)
业务代理(Business Delegate)
字节码(Bytecode)
缓存(Caching)
回调(Callback)
责任链(Chain of responsibility)
断路器(Circuit Breaker)
客户端会话模式(Client Session Pattern)
收集参数(Collecting Parameter)
集合管道(Collection Pipeline)
组合器(Combinator)
命令(Command)
指挥官(Commander)
组件(Component)
复合(Composite)
复合实体(Composite Entity)
复合视图(Composite View)
上下文对象(Context object)
转换器(Converter)
命令查询职责分离(CQRS)
奇怪的递归模板模式(Curiously Recurring Template Pattern)
柯里化(Currying)
数据访问对象(Data Access Object)
数据总线(Data Bus)
数据局部性(Data Locality)
数据映射器(Data Mapper)
数据传输对象(Data Transfer Object)
装饰者(Decorator)
委托(Delegation)
依赖注入(Dependency Injection)
脏标志(Dirty Flag)
领域模型(Domain Model)
双缓冲(Double Buffer)
双重检查锁定(Double Checked Locking)
双重分发(Double Dispatch)
嵌入值(Embedded Value)
事件聚合器(Event Aggregator)
基于事件的异步(Event-based Asynchronous)
事件驱动架构(Event Driven Architecture)
事件队列(Event Queue)
事件溯源(Event Sourcing)
环绕执行(Execute Around)
扩展对象(Extension objects)
外观(Facade)
工厂(Factory)
工厂工具包(Factory Kit)
工厂方法(Factory Method)
扇出/扇入(Fan-Out/Fan-In)
特性开关(Feature Toggle)
过滤器(Filterer)
流畅接口(Fluent Interface)
Flux
享元(Flyweight)
前端控制器(Front Controller)
游戏循环(Game Loop)
保护悬挂(Guarded Suspension)
半同步/半异步(Half-Sync/Half-Async)
六边形架构(Hexagonal Architecture)
标识映射(Identity Map)
拦截过滤器(Intercepting Filter)
解释器(Interpreter)
迭代器(Iterator)
层次(Layers)
惰性加载(Lazy Loading)
领导者选举(Leader Election)
领袖/跟随者(Leader/Followers)
可锁定对象(Lockable Object)
标记接口(Marker Interface)
主从(Master-Worker)
中介者(Mediator)
备忘录(Memento)
元数据映射(Metadata Mapping)
模型-视图-控制器(Model-View-Controller)
模型-视图-意图(Model-View-Intent)
模型-视图-呈现器(Model-View-Presenter)
模型-视图-视图模型(Model-View-ViewModel)
模块(Module)
单子(Monad)
监视器(Monitor)
单态(MonoState)
多例(Multiton)
哑巴模式(Mute Idiom)
裸对象(Naked Objects)
空对象(Null Object)
对象生成器(Object Mother)
对象池(Object Pool)
观察者(Observer)
乐观离线锁(Optimistic Offline Lock)
页面控制器(Page Controller)
页面对象(Page Object)
参数对象(Parameter Object)
部分响应(Partial Response)
管道(Pipeline)
毒丸(Poison Pill)
表现模型(Presentation Model)
优先队列模式(Priority Queue Pattern)
私有类数据(Private Class Data)
生产者-消费者(Producer Consumer)
承诺(Promise)
属性(Property)
原型(Prototype)
代理(Proxy)
基于队列的负载平衡(Queue based load leveling)
反应器(Reactor)
读写锁(Reader Writer Lock)
注册表(Registry)
存储库(Repository)
资源获取即初始化(Resource Acquisition Is Initialization)
重试(Retry)
角色对象(Role Object)
Saga
分离接口(Separated Interface)
序列化实体模式(Serialized Entity Pattern)
仆人(Servant)
服务层(Service Layer)
服务定位器(Service Locator)
服务到工作器(Service to Worker)
分片(Sharding)
单例(Singleton)
空间分区(Spatial Partition)
特例(Special Case)
规范(Specification)
状态(State)
步骤构建器(Step Builder)
藤蔓模式(Strangler)
策略(Strategy)
子类沙盒(Subclass Sandbox)
表模块(Table Module)
模板方法(Template method)
线程本地存储(Thread-local storage)
线程池(Thread Pool)
节流(Throttling)
宽容读者(Tolerant Reader)
蹦床(Trampoline)
事务脚本(Transaction Script)
双胞胎(Twin)
类型对象(Type-Object)
工作单元(Unit Of Work)
更新方法(Update Method)
值对象(Value Object)
版本号(Version Number)
访问者(Visitor)

分享到:

专栏

类型标签

网站访问总量