摘要:
一、单例(Singleton)模式 就是在一个系统里面 只创建一个实例,这样可以保证其唯一性。 二、建造者(Builder)模式 建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。 也就是通过抽象类去规定一个产品的建造过程。从而根据原产品建造出一个新的产品。 三、原型(Prototype)模式 通过给出一个原型对象类指明索要创建的对象类型,然后复制这个原型对象的办法创建出更多的同类型对象。 主要是通过克隆去创建出不同的对象。 阅读全文
摘要:
今天要开始回顾设计模式: 一、简单工厂(Simple Factory)模式 根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的父类和公共的方法。 结构上就是有一个抽象基类 然后基于这个抽象基类实现了许多子类,再有一个类里面通过接收一个参数 去动态的返回不同的子类。也可以将这个类里面的方法 直接组合到抽象类中。 二、工厂方法(Factory Method)模式 其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 原本有一个抽象基类,并且基于这个基类实现了很多子类,然而在这个基础上又多出来了一套... 阅读全文
摘要:
从今天开始就要开始对设计模式进行复习了。 首先还是回顾一下设计模式的核心几大原则: 一、开闭原则(OCP) 一个软件实体应当对扩展开放,对修改关闭。 二、里氏代换原则(LSP) 子类型必须能够代替他们的基类型。 三、依赖导致原则(DIP) 要依赖于抽象,不要依赖于具体。 四、接口隔离原则(ISP) 使用多个专门的接口比使用单一的总接口要好。 五、合成/聚合复用原则(CARP) 一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新对象通过向这些对象的委派达到复用已有功能的目的。 IS-A:一个类是另一个类的“一种”. Has-A... 阅读全文
摘要:
策略模式的用意是针对一组算法,将每一个算法封装到具有共同借口的独立的类中,从而使得它们可以互相替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 结构图: 环境(Context )角色:持有一个 Strategy类的引用。 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。 具体策略(ConcreteStrategy )角色:包装了相关的算法或行为。 在下面的情况下应当考虑使用策略模式: 1. 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一... 阅读全文
摘要:
玩物丧志啊!!!最近总想着玩,休息,结果又耽误了半个月。。唉! 惭愧啊。 今天是设计模式的倒数第二个了。。 虽然前面的 忘得差不多了。不过等看完了 要进行总复习,再复习,再回归,再理解才算完。 模版模式,嗯!这个模式是所有模式中最简单的了。 主要是 有一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象的方法来迫使子类去实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现,这就是模版模式的用意。 结构图: 抽象模板(AbstractClass):定义了一个或多个抽象操作,以便让子类实现,这些抽象操作叫做基本操作,他们是... 阅读全文
摘要:
访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。 结构图: 抽象访问者(Visitor):声明了一个或者多个访问操作,形成所有的具体元素角色必须实现的接口。 具体访问者(ConcreteVisitor):实现抽象访问者角色所声明的接口,也就是抽象访问者锁声明的各个访问操作。 抽线节点(Element):声明一个接收操作,接受一个访问者对象作为一个参量。 具体节点(ConereteElement):实现了抽象元素所规定的接受操作。 结构对象(ObiectStructure):有如下一些责任,可以遍历结... 阅读全文
摘要:
哎!惭愧啊。。竟然没有好好的连续的把这个给看完。。浪费了很多时间。 今天接着往下面学,这个观察者模式好像不是很难。很像委托。 观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化是,会通知所有观察者对象,使它们能够自动更新自己。 程序结构如下: 抽象主题(Subject)角色:主题角色把所有对观察考对象的引用保存在一个聚集里,... 阅读全文
摘要:
命令(command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者一个操作封装到一个对象中。命令模式允许系统使 同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 命令 对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。 每个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来。使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是... 阅读全文
摘要:
责任链模式是一种对象的行为模式【GOF95】。在责任链模式里,很多对象由每一个对象对其下家的用而链起来形成一条链,请求在这个链上传递,直到链上的某一个对象决定处理此请求。 发出请求的客户端并不知道链上的哪一个对象终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。 结构图: 抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通常由一个抽象类或接口实现。 具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处... 阅读全文
摘要:
桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化” 所谓耦合,就是两个实体的行为的某种强关联。而将它们的强关联去掉,就是耦合的解脱,或称脱耦。在这里,脱耦是指将抽象化和实现化之间的耦合解脱开,或者说是将它们之间的强关联改换成弱关联。 将两个角色之间的继承关系改为聚合关系,就是将它们之间的强关联改换成为弱关联。因此,桥梁模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以相对独立地变化。这就是桥梁模式的 。 结构图: 这个图中包含了2个结构:、 1)由抽... 阅读全文