asp.net mvc控制器激活全分析

控制器的激活默认情况下使用反射来实现的,这其中采用了DI,单例等设计模式。对于控制器的主要涉及到如下的类:ControllerBuilder、DefaultControllerFactory、DefaultControllerActivator(实现了IControllerActivator接口)、DependencyResolver(并没有实现IDependencyResolver,但是有这个接
阅读本文

15. 单例设计模式

1. 单例设计模式概念  单例设计模式:保证一个类在内存中只有一个对象。   模式:模式就是解决一类 问题的固定步骤 。   模式的概念最早起源于建筑行业....   建房子的步骤都是一样子:     打地基-----> 浇柱子------->盖楼面--------->砌墙--------->封顶---->装修-----入住   软件行业中23种设计模式:     单例设计模式    模板设计模式
阅读本文

面试问题记录

Java的基础问题: 列出Java的集合都有哪些? 两个对象的比较问题,重写Hashcode和equals方法。hashmap hashtable linkedlist底层实现原理,扩容的实现。CAS AQS说一下String新建时会创建几个对象jdk1.7和1.8在hashmap中的实现不同之处Java并发包下都有哪些常用的类?jvm内存结构GC的算法Spring 框架问题:Spring事务Sp
阅读本文

设计模式-python实现

设计模式是什么?设计模式是经过总结、优化的,对我们经常会碰到的一些编程问题的可重用解决方案。一个设计模式并不像一个类或一个库那样能够直接作用于我们的代码。反之,设计模式更为高级,它是一种必须在特定情形下实现的一种方法模板。设计模式不会绑定具体的编程语言。一个好的设计模式应该能够用大部分编程语言实现(如果做不到全部的话,具体取决于语言特性)。最为重要的是,设计模式也是一把双刃剑,如果设计模式被用在不
阅读本文

【原】常用的javascript设计模式

什么是设计模式百度百科:  设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。  使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。 实际情况:   设计模式绝对不是纸上谈兵的知识,光看书就以为
阅读本文

5.1、处理器拦截器简介

Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器)类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。 5.1.1、常见应用场景1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。2、权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;3、性能监控:有时候系统在
阅读本文

[C#]设计模式-单例模式-创建型模式

单例模式用于在整个软件系统当中保持唯一实例,在 C# 当中最能够体现此概念的就是静态类,静态类的生命周期是跟随整个程序,并且在整个程序中仅保有一个实例。不过在这里我们不再详细阐述单例模式与静态类有什么区别,如果有兴趣的话可以查看 这篇博文 和 。这里说一下个人的理解:单例模式可以用实现接口与继承,而静态类是无法实现的。单例模式可以方便进行 Mock 测试。单例对象可以很方便的进行替换。静态类/静态
阅读本文

Java并发-任务执行

大多数的应用程序都是围绕“任务执行”来构造的:任务常常是一些抽象的并且离散的工作单元。我们把应用程序的工作分解到多个任务中,可以简化程序的组织结构,提供一种自然的事物便捷来优化错误恢复过程,并且提供一种自然的并行结构来提升并发性。   在线程中执行任务  我们在围绕任务执行来设计程序结构的时候,首先就是要找出清晰的任务边界,一般来说,任务之间是相互独立的---任务不依赖其他任务。独立性有助于实
阅读本文

浅谈设计模式--模板方法模式

最近刚刚学习了设计模式之模板方法模式,趁着热乎劲,一点小心得分享给大家,抛砖引玉,欢迎评论区讨论!    所谓模板方法,就是利用java的继承机制,在父类中定义一套算法框架,封装到一个模板方法当中,以达到父类控制算法流程的目的。一般为了防止该模板方法被覆盖,通常被声明为final。    例如,完成一套咖啡因饮料的冲泡步骤如下:        1.把水煮沸        2.冲泡咖啡/浸泡
阅读本文

ActiveMQ使用的设计模式

注:接收不需要连接池,而发送需要连接池,是因为,接收在启动项目时就要注册监听,数目是固定的,而发送则会随着时间数目不断在变动,需要连接池,性能更优。 重点代码:p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monac
阅读本文

面向对象六大原则 和 几种设计模式

面向对象的六大原则单一职责原则:1)类的功能应该尽量细化分开,降低功能扩展时的难度;2)类不应该实现不需要的(或其他模块的)功能;ps.单一职责原则不仅仅适用于面向对象编程,也适用于模块的实现。接口隔离原则1)接口的抽象的功能应该尽量细化分开,不要让实现了这个接口的类必须实现它不需要的功能;【接口隔离原则】和【单一职责原则】比较依赖倒置原则1)尽量依赖于抽象而不是具体的实现说白了就是尽量用接口或者
阅读本文

大话设计模式(C#)

还是那几句话:学无止境,精益求精十年河东,十年河西,莫欺少年穷学历代表你的过去,能力代表你的现在,学习代表你的将来问个问题:如何写出高质量的代码?灵活,可扩展,易读,易维护,可重构,可复用......???如果要解答上述问题,就有必要学习设计模式。本人将从大话设计模式一书中进行取例,也会利用大话设计模式一书中的简短对话进行情景构造!本篇博客属于系列博客,我个人书写的同时,也希望自己坚持下来,争取把
阅读本文

设计模式(五) 建造者模式

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:  四个要素产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程
阅读本文

设计模式(七) 命令模式

1. 概述  将一个请求封装为一个对象(即我们创建的Command对象),从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。2. 解决的问题  在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。3. 模式中角色  3.1 抽象命令(Command
阅读本文

设计模式(七)学习----命令模式

命令模式的定义:模式的组成:* 抽象命令类(Command):声明执行操作的接口。调用接收者TVReceiver响应的操作,以实现执行的方法execute。* 具体命令类(TvChangeCommand,TvCloseCommand,TvOpenCommand):创建一个具体命令对象并设定它的接收者。通常会持有接收者,并调用接收者的功能来完成命令要执行的操作* 调用者(RemoteControll
阅读本文

设计模式(四) 适配器模式

定义:  适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的用途  用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此问题,而这正像是本模式
阅读本文

设计模式笔记-命令模式

命令模式最近在重新看设计模式,看了《Head First设计模式(中文版)》中的命令模式,跟上次刚入职看的感觉有点不一样,还是记录一下,便于以后查阅。作用:将 动作的请求者 和 动作的执行者 解耦。书中例子:场景,有很多电器都有开、关的方法;问题:如果遥控器和电器不解耦,遥控器会和电器有很多代码(例如if else),新增电器就要改代码。      要将 遥控器 和 电器 解耦,把电器的开和关都放
阅读本文

23种设计模式小感悟

1.普通工厂和静态工厂模式:利用接口来实现,可利用于多个产品创建。2.抽象工厂模式:倘若在某个接口上你想再增加新的功能,可以创建另一接口编写你想添加的功能。例:A类继承Factory1类拥有Add()方法,而A类并不满足于只拥有Add()方法想再增加一个test()方法,则可以在建一个工厂类,引入接口实现Test方法。3.单例模式:在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例
阅读本文

设计模式(二) 代理模式

代理模式是Java常见的设计模式之一。所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。为什么要采用这种间接的形式来调用对象呢?一般是因为客户端不想直接访问实际的对象,或者访问实际的对象存在困难,因此通过一个代理对象来完成间接的访问。在现实生活中,这种情形非常的常见,比如请一个律师代理来打官司。代理模式的UML图 从UML图中,可以看出代理类与真正实现的类都是
阅读本文

设计模式在项目中使用的一些思考

项目中service类成为上帝类,所有工作都在一个类中完成已经成为了一个相当棘手的问题。这样的高耦合场景使得代码难以维护,难以阅读,在需求变更时修改起来极为不方便,几乎是每一次变更就需要重构。学习设计模式可以尝试在项目中降低耦合,抽象业务场景,从而使得项目更好的扩展和维护。 策略模式:定义一系列的算法(策略),这些策略所完成的工作相同,只是提供了不同的实现。项目中有这样一个场景:对于国际化的资源,
阅读本文