热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《设计模式深入解析》学习心得与总结

法则单一职责法则单一职责原则就是一个类只负责做一件事件,只有一个功能。比较于功能比较多的类,面对功能实现修改的时候,只需要修改一个类,而不会对其他的功能造成影响。比如说界面显示和游戏逻辑分开,只要不该
法则

单一职责法则

单一职责原则就是一个类只负责做一件事件,只有一个功能。比较于功能比较多的类,面对功能实现修改的时候,只需要修改一个类,而不会对其他的功能造成影响。 比如说界面显示和游戏逻辑分开,只要不该接口,界面与逻辑的具体实现都可以单独修改而不会对彼此造成影响。

开放封闭法则

开放封闭原则指的是,应对需求变更,代码对修改是封闭,对增加是开放的。当然应对需求的变更,代码肯定都是需要修改的,就看修改的多还是修改的少。

依赖倒转法则

依赖倒转是指在有依赖存在的情况下,要依赖于抽象依赖于接口而不是具体的实现。比如说A--->B,我们会从B上抽象出一个父类FatherB,让A-->FatherB,这样当我们需要增加其他的类型如B1,B2的时候,A是不需要做修改的。

迪米特法则

迪米特法则是指封装,将User不需要的属性或是方法都封装起来,不让用户看到,只提供需要的功能出去。这样用户不会知道类中的细节,可以减少耦合。
设计模式

创建相关(简单工厂、抽象工厂、工厂方法、单例、模板模式)

该类别下的几个模式都是和类的创建相关的设计模式。
简单工厂,把具体类的创建转移到工厂类中,又工厂来决定具体实例化哪一种对象。对用户来说不关心当前使用的是具体的哪一个类,只提供选择给工厂。注意只是转移了switch..case语句,而非没有。 用户在每一次要创建对象的时候,都需要使用工厂来创建对象,而且每一次创建都需要提供一次选择,如果要改创建的对象的类型的话,需要每处都改。
工厂方法,工厂方法从简单工厂演变而来,它为每一个类提供一个创建它的工厂。它把实例化哪一个对象的责任又交回给用户。但是好处是,加入你需要多次创建同一种类型的对象,那么只需要保存具体工厂的引用就可以,在修改的时候,也只需要修改一次。应对修改都是需要修改源文件的,就是看修改的多还是修改的少。

抽象工厂,抽象工厂从工厂方法演变而来,工厂方法只创建出一个对象,而抽象工厂提供多个创建函数,可以创建出有关联的一系列对象

单例,顾名思义。
模板模式,指的是把固有的框架或者算法流程实现在父类中,子类从父类中继承框架,然后重写个性化不同的步奏的实现。这样可以复用的框架流程,面对流程的修改只需要改写一个地方。

组合相关(代理、适配器、外观、桥接、装饰模式、策略模式)

代理模式,代理模式中被代理者和代理提供相同的接口(实现同一套接口),使用者时不只带有代理这么回事情的。代理组合被代理者,提供封装。在代理类中可以加入鉴权、安全等一些代码,更好的保护被代理者。

外观模式,外观模式的思想和实现差不多,即外边看起来长的差不多,同样的接口下可以封装出不同的实现。

适配器模式,适配器模式更多的用于对遗留代码的复用,或为不同具体实现提供相同的接口。即把所有的变量封到适配器中,把耦合复杂性限制到适配器中,为用户提供统一的接口。用户就不再存在这个复杂性,也就是说不是所有的用户开发者都来关心不同的实现。

桥接模式,主要用于两种及以上的分类方法中。它的原理是,能够用组合的情况下优先用组合,然后再用继承。用组合代替继承,即用多线继承来代替单线的基础,可明显的降低继承的层次减少类的数量。 比如说2中不同的手机,3种不同的游戏,桥接(组合)产出的类的个数是3+3,单线基础产生的类的个数是2^3=8
装饰模式,装饰模式动态的接口添加功能。它的实现是:类A,装饰器都提供相同的接口,装饰器中保存类A的引用,在装饰器的接口中调用类A的接口,再添加额外的功能。比较于直接使用继承,更加的灵活,不用为每一种不同的实现产生一个类,降低了类的个数。

策略模式,策略模式是实现一个策略类,策略类中实现一个统一的接口,再在该接口中实例化不同的算法。对用户来说,只关心最终的结果,而不需要去在意具体的算法。

关系相关(观察者、命令模式)

观察者模式,观察者模式实际上一个注册通知的机制,本来一个类A需要注意相应的事件,又同时要做其他的工作。引入观察通知机制后,该类平时只需要做他本身的工作,把观察通知的则是都交由专门的类(一个对象)来负责。假如有很多个类A的对象,那么每一个对象不用都去注意特定事件的发生了。注意该模式对依赖倒转的原则 体现的特别好。

命令模式,命令模式的功能是把Client(客户)和Serve(服务提着)解耦,引入一个服务员。Client只需要说我要某种程度的服务,需要把某种服务封装成一个类,服务器把这个服务(或者叫订单)分配给服务提供真来执行。客户只管结果,不用去管具体是由哪一个服务提供者来提供的服务。服务员这边可以提供合适的调度算法来使服务提供者的效率更加的高效。

链式(状态、职责链模式)


状态模式和职责链模式,个人认为这两种模式的目的都是消灭掉switch..case语句,把选判断解散到不同的类中,可以更加灵活的来处理状态以及职责链的转换过程。 避免出现太过复杂的switch..case分支判断。 它的实现原理是在类中提供下一跳的对象,这样一下向下传递,直到任务(状态)被处理。

体会 设计模式的理解TIPS:第一,从用户的角度出发来思考;第二,想象你有不同种类的类,要提供抽象;第三,想象你实例化出的对象可能特别的多。 设计模式都是四个原则的具体实现,主要的点在封装,在抽象,在继承,在复用,在解耦。
推荐阅读
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
author-avatar
留心6_136
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有