设计模式 | 设计原则与分类
发布于 2021-01-24 23:52
吾生亦有涯而知无涯
设计模式
设计模式(Design pattern) 是在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。
设计模式是软件工程的基石,在实际项目中合理的使用设计模式,可以完美解决在开发过程中遇到的代码臃肿、冗余等问题。也为以后的维护和扩展提供便利。
1. 设计的原则
在使用设计模式时,有七大原则,分别是
1. 开闭原则 (Open Close Principle)
对扩展开放,对修改关闭;可以通过抽象约束、封装变化
来实现开闭原则,即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。
2. 里氏代换原则 (Liskov Substitution Principle)
里氏代换原则是面向对象设计的基本原则之一。任何基类可以出现的地方,子类一定可以出现。里氏替换原则通俗来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能
。
3. 依赖倒转原则(Dependence Inversion Principle)
这个原则是开闭原则的基础,降低了客户与实现模块之间的耦合。具体就是:针对接口编程,依赖于抽象而不依赖于具体
。
4. 单一职责原则(Single Responsibility Principle)
该原则提出对象不应该承担太多职责,此原则的核心就是控制类的粒度大小、将对象解耦、提高其内聚性
。
5. 接口隔离原则(Interface Segregation Principle)
要求开发人员尽量将臃肿庞大的接口拆分成更小的和更具体的接口
,让接口中只包含客户感兴趣的方法,而不是定义一个庞大臃肿的接口,让所有字类去实现。
接口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的:
单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。 单一职责原则主要是约束类,它针对的是程序中的实现和细节;接口隔离原则主要约束接口,主要针对抽象和程序整体框架的构建。
6. 迪米特原则(Demeter Principle)
又称最少知道原则,迪米特原则是指只与你的直接朋友交谈,不跟“陌生人”说话,其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。即一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立
。
7. 合成复用原则(Composite Reuse Principle)
它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现
。
如果要使用继承关系,则必须严格遵循里氏替换原则。合成复用原则同里氏替换原则相辅相成的,两者都是开闭原则的具体实现规范。
2.设计模式分类
根据设计目的,设计模式可以分为3类:
1. 创建型模式
描述:这些设计模式是隐藏具体的创建逻辑
,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。
设计模式:
工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)
2. 结构型模式
描述:结构型模式描述如何将类或对象按某种布局组成更大的结构
。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。
由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。
设计模式:
适配器模式(Adapter Pattern) 桥接模式(Bridge Pattern) 过滤器模式(Filter、Criteria Pattern) 组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy Pattern)
3. 行为型模式
描述:行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务
,它涉及算法与对象间职责的分配。
设计模式:
责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式(Iterator Pattern) 中介者模式(Mediator Pattern) 备忘录模式(Memento Pattern) 观察者模式(Observer Pattern) 状态模式(State Pattern) 空对象模式(Null Object Pattern) 策略模式(Strategy Pattern) 模板模式(Template Pattern) 访问者模式(Visitor Pattern)
3. 最后
设计模式中的23设计模式都是遵循这七个原则为中心来展开的。这些原则都是前人经过反复使用,得出来的经验总结。在实际开发中以这七个原则为核心,合理利用设计模式,写出来的代码肯定是一个高质量的代码,后人看见你代码肯定会赞叹佩服你。
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材