热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

设计模式之学习笔记(前言)

最近一直在学习设计模式,希望在这里记录一个学习过程,让自己不仅是读懂设计模式的定义和类图,更要是能敲出一个简单的demo,并能写下来设计模式各方面的运用。读懂、会用、书写出来

        最近一直在学习设计模式,希望在这里记录一个学习过程,让自己不仅是读懂设计模式的定义和类图,更要是能敲出一个简单的demo,并能写下来设计模式各方面的运用。读懂、会用、书写出来,我认为这三个是不同的阶段,读懂了不一定会用,会用了不一定能把它写下来,能独立写出来我认为需要有自己的理解,这样记忆才会更深刻。同样这三个过程也是一个循序渐进的过程,不可跳跃的步骤。

设计模式传送门:单例模式,代理模式


简介:说到设计模式,第一次听到的时候感觉很高端,下面我从网上摘录一份定义。

设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。


为什么要学习设计模式:写这篇文章的时候我已经学习设计模式有一段时间了,在这段时间里很明显的感觉到设计模式的强大之处,并且能理解很多JAVA类库、框架的源码结构到底为什么这么写,之前我看源码有些复杂的地方会有点晦涩难懂,在学习了例如代理模式中动态代理,再去看JAVA自带的动态代理类的源码,大致就能明白它的深意,又比如学习了装饰器模式,就能更加理解IO源码的结构为什么是这样的,所以可以培养一定的看源码的能力。还可以锻炼设计思维,为以后写出更加健壮的JAVA代码做铺垫。不仅仅是做一名码农,要做一名有思想的码农,哈哈。


设计模式之六大原则

在学习设计模式之前,脑中需要对六大原则有一个大致的概念,但不一定需要完完全全遵守这些原则,只是在可能的情况下尽量遵守。

1. 单一职责原则描述的意思是每个类都只负责单一的功能,切不可太多,并且一个类应当尽量的把一个功能做到极致

2. 里氏替换原则这个原则表达的意思是一个子类应该可以替换掉父类并且可以正常工作

3. 接口隔离原则也称接口最小化原则,强调的是一个接口拥有的行为应该尽可能的小

4. 依赖倒置原则这个原则描述的是高层模块不该依赖于低层模块,二者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象

5. 迪米特原则也称最小知道原则,即一个类应该尽量不要知道其他类太多的东西,不要和陌生的类有太多接触

6. 开-闭原则最后一个原则,一句话,对修改关闭,对扩展开放

这些原则到现在为止我也只能大概懂一部分,只是说这里有一个概念或印象,在后面学习设计模式的时候会慢慢加深对这些原则的理解。

最后,摘录一句我认为很经典的话:用抽象构建框架,用细节实现扩展



推荐阅读
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文探讨了如何在编程中正确处理包含空数组的 JSON 对象,提供了详细的代码示例和解决方案。 ... [详细]
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
  • 本文详细介绍了美国最具影响力的十大财团,包括洛克菲勒、摩根、花旗银行等。这些财团在历史发展过程中逐渐形成,并对美国的经济、政治和社会产生深远影响。 ... [详细]
  • andr ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • Win11扩展卷无法使用?解决扩展卷灰色问题的指南
    本文详细介绍了在Windows 11中遇到扩展卷灰色无法使用时的解决方案,帮助用户快速恢复磁盘扩展功能。 ... [详细]
  • 武汉大学计算机学院研究生入学考试科目及专业方向
    武汉大学计算机学院为考生提供了多个硕士点,涵盖计算机科学与技术、软件工程、信息安全等多个领域。考研科目包括思想政治理论、英语一或二、数学一或二以及专业基础课程。具体的专业方向和考试科目详见正文。 ... [详细]
author-avatar
沫雅mo_853
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有