
设计模式
文章平均质量分 68
瑞雪骄阳
这个作者很懒,什么都没留下…
展开
-
Autofac+Castle实现AOP事务
一、前言最近公司新项目,需要搭架构进行开发,其中需要保证事务的一致性,经过一番查找,发现很多博文都是通过Spring.Net、Unity、PostSharp、Castle Windsor这些方式实现AOP的。但是这不是我想要的,因此一番查找后,使用Autofac、DynamicProxy该方式实现AOP。二、使用AOP的优势博主觉得它的优势主要表现在:将通用功能从业务逻辑中抽离出来,就可以省略大量重复代码,有利于代码的操作和维护。 在软件设计时,抽出通用功能(切面),有利于软件设计的模块化转载 2022-02-24 16:23:46 · 429 阅读 · 0 评论 -
工厂模式
工厂模式我们在编程的时候,每当"new"一个对象之后,这个对象就依赖于这个类了。如果在后期的维护过程中由于某些原因需要修改一下这个类,则唯一的做法就是打开源代码,进行修改,修改所有与这个对象有关的操作。这对我们是非常不利的。问题出来了:对象不能应对“具体实例化类型”的变化解决思路:封装变化点,哪里变化,封装哪里。在这个例子中,要实例化的类变了,就将实例化这个操作封装起来,我们可以把"n转载 2012-12-11 17:22:40 · 464 阅读 · 0 评论 -
外观模式
外观模式 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦? Facade模式为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。如有两个类:转载 2012-12-19 13:11:11 · 423 阅读 · 0 评论 -
建造者模式
建造者模式 意图将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 有些产品结构比较复杂,构成产品的零件有许多个,这许多个零件又没有什么关系,并且这些零件的组合是有必须的顺序的,比如在实现对数据库查询过程中,要实现一下步骤:1.实例化数据库连接对象SqlConnection;2实例化sql命令对象SqlCommand;3.设定sql命令转载 2012-12-11 18:34:00 · 405 阅读 · 0 评论 -
代理模式
代理模式概述在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切。这就是本文要说的Proxy模式。 意图为其他对象提供一种代理以控制对这个对象的访问。结构图转载 2012-12-20 17:03:23 · 459 阅读 · 0 评论 -
原型模式
原型模式 原型模式其实就是一个从一个对象再创建另一个可定制的对象,而且不需要知道任何创建细节,NET在System命名空间下,提供了ICloneable接口,实现这个接口完成原型模式。一般在初始化信息不变的时候,克隆是最好的办法。隐藏了创建对象的细节,性能也大大提高。MemberWiseClone(),复制仅仅对线程栈进行复制,是属于浅复制,要深复制,需要稍微修改代码。 结构图转载 2012-12-17 14:06:50 · 559 阅读 · 0 评论 -
桥接模式
桥接模式 桥接模式:将抽象部分与实现部分分离,使它们都可以独立的变化.这个模式的主要特点就是解决一个对象的可能变化的因素的多个方向的依赖性。有的时候一个对象,引起这个对象发生变化的因素很多,这个时候我们就可以考虑,把依赖具体实现,提升为依赖抽象,来完成对象和变化因素之间的低耦合,提高系统的可维护性和扩展性。而且客户可能不知道某个因素是否发生变化或者其他的可能情况。当然桥接模式也原创 2012-12-20 16:30:14 · 543 阅读 · 0 评论 -
装饰模式
装饰模式 装饰模式:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 结构图 在软件开发过程中,可能经常会根据需要修改扩展对象的功能,如果不采用装饰模式的话,可能会使开发变得非常混乱并且不便于管理。我们先来看一个实例。有个客户需要开发一个音乐的播放器,于是我们开原创 2012-12-19 16:42:03 · 445 阅读 · 0 评论 -
状态模式
状态模式 状态模式: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。该模式适用于一种情况:某类有很多状态,在不同的状态下,相同的方法执行的逻辑是不同的。这样就能把对象让对象动作的执行更方便,貌似是改变了对象,但是只是改变了对象的状态。结构图: 代码:package state; public interfac转载 2012-12-21 17:05:18 · 460 阅读 · 0 评论 -
单态模式
单态模式Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实例等问题的,所以,这应该是类设计者的责任,而不是类使用者的责任。从另一个角度来说,Singleton模式其实也是一种职责型模式。因为我们创建了一个对象,这个对象扮转载 2012-12-11 15:07:11 · 418 阅读 · 0 评论 -
备忘录模式
备忘录模式 备忘录模式:用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态备忘录模式中的角色发起人:创建含有内部状态的备忘录对象,并使用备忘录对象存储状态负责人:负责人保存备忘录对象,但不检查备忘录对象的内容备忘录:备忘录对象将发起人对象的内部状态存起来,并保正其内容不被发起人对象之外的对象转载 2012-12-24 13:42:51 · 403 阅读 · 0 评论 -
开发原则
单一职责原则就一个类而类,应该仅有一个引起它变化的原因。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其它职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的的破坏。软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。 如果你能够想到多于一个动机去改变一个类,那么这个类就具有多于一个的职责。转载 2012-12-10 17:15:17 · 494 阅读 · 0 评论 -
访问者模式
访问者模式 访问者模式的目的是封装一些施加于某种数据结构元素之上的操作,一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。 访问者模式适用于数据结构相对未定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化。数据结构的每一个节点都可以接受一个访问者的调用,此节点向访问者对象传入节点对象,而访问者对象则反转载 2012-12-21 15:25:35 · 693 阅读 · 0 评论 -
模版方法模式
模版方法模式 模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是非常简单而且几乎是无处不用,很少有人没有用过它。类结构图 示列代码如下:abstract class Abstr原创 2012-12-21 11:46:07 · 435 阅读 · 0 评论 -
适配器模式
在软件系统中,往往会因为新的需求,以致现有对象的接口不能满足新的需求,如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?使用适配器模式,可能会解决这类问题。 Adapter模式用于将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 类的Adapter模式结构图 对象的转载 2012-12-17 17:52:28 · 464 阅读 · 0 评论 -
组合模式
组合模式 组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦,它定义了特殊对象的实现结构。结构图 组合模式解说 这里我们用绘图这个例子来说明Compo转载 2012-12-17 15:34:57 · 394 阅读 · 0 评论 -
职责链模式
职责链模式职责链模式:使多个对象都有机会处理请求,从而避免请求的送发者和接收者之间的耦合关系,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。职责链模式的优缺点:优点:1. 责任的分担。每个类只需要处理自己该处理的工作(不该处理的传递给下一个对象完成),明确各类的责任范围,符合类的最小封转载 2012-12-24 11:59:07 · 412 阅读 · 0 评论 -
策略模式
策略模式 策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。 1.什么是策略模式?策略模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。2.策略模式有什么好处?策略模式的好处在转载 2012-12-24 10:49:28 · 456 阅读 · 0 评论 -
中介者模式
中介者模式 中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“中介”对象,使得两头的对象分别和“中介”对象引用或者依赖。 当然并不是所有的对象都需要加入“中介”对象。如果对象之间的关系原本一目了然,中介对象的加入便是转载 2012-12-24 11:21:50 · 480 阅读 · 0 评论 -
观察者模式
一、观察者模式简介 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化的时,会通知所有观察者对象,使他们能够自动更新自己。二、解决的问题 当一个对象的改变需要同时改变其他对象的时候,而且不知道有多少对象有待改变时,应该考虑使用观察者模式。观察者模式所做的工作其实就是解除耦合,让耦合的双方都依赖于抽象,而转载 2012-11-08 16:31:57 · 514 阅读 · 0 评论