资讯详情

资讯详情

设计模式 - 简述

设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、 以及解决问题的思考方式。设计模免去我们自己再思考和摸索。就像是经典 的棋谱不同的棋局我们用不同的棋谱。”套路”一、分类三大类23种设计模式的分类总体来说设计模式分为三大类创建型模式共五种工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式共七种适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式共十一种策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。类别设计模式解决什么问题 / 目的典型场景创建型单例Singleton保证一个类只有一个实例并提供全局访问点配置管理、连接池、日志对象创建型工厂方法 Factory Method把对象创建延迟到子类解耦调用方与具体类不同支付方式、不同日志实现创建型抽象工厂 Abstract Factory创建一系列相关或相互依赖的对象族跨平台 UI 组件、不同数据库驱动族创建型建造者 Builder分步构建复杂对象分离构建过程与表示复杂配置对象、SQL/请求参数构建创建型原型 Prototype通过复制现有对象创建新对象避免重复初始化对象克隆、复杂对象快速复制结构型适配器 Adapter转换接口让不兼容的类能一起工作旧系统接口适配、第三方 SDK 封装结构型桥接 Bridge分离抽象与实现使二者可独立变化多维度变化图形与颜色、消息与发送方式结构型组合 Composite把对象组合成树形结构统一处理个体和整体菜单树、文件目录、组织架构结构型装饰器Decorator动态给对象增加职责不改变原类Java IO 流、增强功能而不改原类结构型外观 Facade为复杂子系统提供统一简化接口一键启动流程、统一支付入口结构型享元 Flyweight共享细粒度对象减少内存占用池化对象、大量重复小对象结构型代理Proxy控制对对象的访问增加额外逻辑远程代理、权限代理、延迟加载、AOP行为型责任链Chain of Responsibility把请求沿处理链传递直到被处理审批流、过滤器链、网关拦截器行为型命令 Command把请求封装成对象支持撤销、排队、记录任务队列、撤销操作、遥控器行为型解释器 Interpreter定义语言文法并解释表达式规则引擎、简单表达式解析行为型迭代器 Iterator顺序访问集合元素不暴露内部结构集合遍历、统一遍历接口行为型中介者 Mediator用中介对象封装对象间交互降低耦合聊天室、消息总线、UI 组件协调行为型备忘录 Memento保存和恢复对象状态不破坏封装撤销/回滚、快照行为型观察者Observer对象状态变化时通知依赖它的对象事件监听、发布订阅、消息通知行为型状态 State对象行为随内部状态改变而改变订单状态流转、连接状态机行为型策略Strategy封装可互换算法运行时选择支付策略、排序策略、优惠计算行为型模板方法 Template Method父类定义算法骨架子类实现可变步骤流程固定但步骤可变的业务行为型访问者 Visitor在不改变元素类的前提下增加新操作编译器 AST、复杂对象结构统计日常开发/面试最常用单例、工厂、策略、观察者、责任链、装饰器、代理、模板方法。创建型Singleton单例模式保证一个类只有一个实例并提供一个访问它的全局访问点Abstract Factory抽象工厂提供一个创建一系列相关或相互依赖对象的接口而无须指定它们的具体类。Factory Method工厂方法定义一个用于创建对象的接口让子类决定实例化哪一个类Factory Method使一个类的实例化延迟到了子类。Builder建造模式将一个复杂对象的构建与他的表示相分离使得同样的构建过程可以创建不同的表示。Prototype原型模式用原型实例指定创建对象的种类并且通过拷贝这些原型来创建新的对象。结构型Composite组合模式将对象组合成树形结构以表示部分整体的关系Composite使得用户对单个对象和组合对象的使用具有一致性。Facade外观模式为子系统中的一组接口提供一致的界面fa?ade提供了一高层接口这个接口使得子系统更容易使用。Proxy代理模式为其他对象提供一种代理以控制对这个对象的访问代理类似中介的身份Adapter适配器模式将一类的接口转换成客户希望的另外一个接口Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。Decrator装饰模式动态地给一个对象增加一些额外的职责就增加的功能来说Decorator模式相比生成子类更加灵活。Bridge桥模式将抽象部分与它的实现部分相分离使他们可以独立的变化。Flyweight享元模式行为型Iterator迭代器模式提供一个方法顺序访问一个聚合对象的各个元素而又不需要暴露该对象的内部表示。Observer观察者模式定义对象间一对多的依赖关系当一个对象的状态发生改变时所有依赖于它的对象都得到通知自动更新。Template Method模板方法定义一个操作中的算法的骨架而将一些步骤延迟到子类中TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。Command命令模式将一个请求封装为一个对象从而使你可以用不同的请求对客户进行参数化对请求排队和记录请求日志以及支持可撤销的操作。State状态模式允许对象在其内部状态改变时改变他的行为。对象看起来似乎改变了他的类。Strategy策略模式定义一系列的算法把他们一个个封装起来并使他们可以互相替换本模式使得算法可以独立于使用它们的客户。China of Responsibility职责链模式使多个对象都有机会处理请求从而避免请求的送发者和接收者之间的耦合关系Mediator中介者模式用一个中介对象封装一些列的对象交互。Visitor访问者模式表示一个作用于某对象结构中的各元素的操作它使你可以在不改变各元素类的前提下定义作用于这个元素的新操作。Interpreter解释器模式给定一个语言定义他的文法的一个表示并定义一个解释器这个解释器使用该表示来解释语言中的句子。Memento备忘录模式在不破坏对象的前提下捕获一个对象的内部状态并在该对象之外保存这个状态。二、六大原则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原则是尽量使用合成/聚合的方式而不是使用继承。三、个人理解单例模式类只能new一次而且是在其类的内部new的。文档地址https://blog.csdn.net/weixin_46707734/article/details/129254335代理模式创建个代理类和被代理类实现共同的接口代理类可以对被代理类进行扩展文档地址https://blog.csdn.net/weixin_46707734/article/details/129254400工厂模式实现了创建者与调用者的分离即将创建对象new的过程屏蔽隔离起来达到提高灵活性的目的文档地址https://blog.csdn.net/weixin_46707734/article/details/129254400
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →