常用设计模式(未完待续)

各个网站及博客上,都有对设计模式的讲解和说明,本人作为非纯理科生,看着头晕,所以尝试着用非代码的形式尝试解析设计模式。争取做到小学生也能看懂。

为什么要设计模式

想要搞清楚各种设计者模式,首先得知道,我们为什么要设计模式,只要知道我们为什么需要设计模式,知道它的根本原则或者说是根本初衷,那么在结合实际开发的时候,才会游刃有余。我们可以试着回想一下,我们刚开始接触编程的时候,通过各种算法等实现一个小demo,这时是非常轻松的,但是随着项目的复杂化,一些无规划的接口实现,抽象方法的继承使得项目十分杂乱,再加上后来项目越来越复杂,维护起来十分困难。那么什么样的设计才能避免这种,又杂乱,又不容易维护的情况发生呢?试想一下,如果在编写程序的时候,在保证原有代码不修改,后增的代码在此基础上扩展而不用修改以前的代码,这是不是一件既不吃力又能讨好的事情呢?这个思想其实就是体现了设计模式的一个重要原则,开闭原则。所谓的开就是易扩展性。所谓的闭就是不修改原来的代码。

各种常用设计模式

策略模式

通俗的讲,父类是鸭子Duck的话,子类黑鸭HeiDuck可以继承鸭子的很多共有属性,比如腿啊,能跑啊等等,但是如果出现一些非共有的特性,比如说,飞翔fly(),打电话call()等,独有的特性,用继承的方法就非常不合适了,因为并不是所有的鸭子都会飞或者能打电话的,这时,为了避免由继承引起的代码混乱,可以新建两个接口,定义飞和打电话的功能,如有子类要使用这些特有的方法,实现这个新建的接口就OK了,主要是多用到组合,少用继承的思想。这个其实就是策略模式。

观察者模式

通常有一个主题和多个观察者,当主题发生改变时,观察者会收到通知并自动更新。就像微信公众号,我们关注的大V的文章发生更新,我们会收到通知一样。大V就是主题,我们就是观察者。观察者模式非常重要的一个思想就是松耦合。要想实现这个目的,可以把观察者和主题都定义成接口。

装饰者模式

所谓装饰者模式,就是可以从字面上来理解,就是装饰作用,就是一个有一个核心,然后你用其他的东西去装饰它。像你新买的毛坯房一样,这个房子就是核心,你用沙发,床之类的去装修,达到一个能舒适居住的房子。你去买手抓饼,那款饼就是核心,你用黄瓜、胡萝卜等装饰它,然后做成一个美味的手抓饼。

工厂模式

工厂模式就是一个工厂,这种工厂呢,不是生产吃的,也不是生产喝的,它的作用就是生产对象,比如我们在刚开始学习JAVA语言的时候,新建一个对象的时候,总是需要new,在开发稍微大一点的项目的时候,一遇到新建对象就new是十分繁琐的,这个时候就需要一个工厂模式生产对象,然后进行相关的操作。

命令模式

举个例子,比如说有两个人,一个叫A,一个叫B,A是个炒股大牛,B是个信息收集高手,但是A之所以能这么顺利,都是因为A每次都去B获取消息,只要A不获取B的消息,肯定亏损,这种情况来说,A是依赖B的。在我们开发一个项目时,耦合的程度越高,其实是越不利于项目后期的开发和维护的。所谓A要避免对B的依赖,那怎么办呢?我们可以找一个牛逼的机构X,这个机构X能获取各种各样的信息。A只要想获取消息,就告诉这个机构X,机构X就能把信息传递给A。如果单单从A和机构X这种少量数据,是看不出来这种设计的优势的,那试想一下,如果C需要从D获取政治消息,E需要从F收集时装消息等等,A,C,E等都要从B,D,F获取信息的功能,这在编程阶段,是多么痛苦的一件事情!现在呢,使用命令模式,A,C,E想获取各自的消息,直接去机构X,实现收集信息的功能,这是一件多么快捷而又幸福的事情!

适配器模式

单例模式

1.什么是单例多例:
所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新的对象来处理,比如action;
2.如何产生单例多例:
在通用的SSH中,单例在spring中是默认的,如果要产生多例,则在配置文件的bean中添加scope=”prototype”;
3.为什么用单例多例:
1).之所以用单例,是因为没必要每个请求都新建一个对象,这样子既浪费CPU又浪费内存;
2).之所以用多例,是为了防止并发问题;即一个请求改变了对象的状态,此时对象又处理另一个请求,而之前请求对对象状态的改变导致了对象对另一个请求做了错误的处理;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值