
设计模式
忆杯清茶
这个作者很懒,什么都没留下…
展开
-
代理模式
代理模式定义:代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问,用一个对象代替本尊对象。思想:代理模式主要用于控制访问权限。动机:有时候一个对象会很大,而大部分情况用户调用此对象不需要对此对象进行完整的实例化,可能仅仅需要一小部分功能。用代理可以减少系统资源的浪费,快速地给用户相应,而不必加载无用的东西。有时候对象的一部分属性或行为不能给某些用户访原创 2013-10-31 17:25:43 · 612 阅读 · 0 评论 -
外观模式
外观模式定义外观模式,又称门面模式,它提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。架构示意图:意图:提供一个简单接口,让子系统更易于使用。最少知识原则:Least Knowledge:只和你的密友交谈。这个原则希望我们在设计中,不要让太多的类耦合在一起,免得修改系统中一部分,会影响到其他部分。如果许多类之原创 2014-02-10 17:52:55 · 761 阅读 · 0 评论 -
装饰者模式
装饰者模式简介 Decorator/Wrapper模式:动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。 表现形式1. 装饰者和被装饰对象有相同的超类型。2. 你可以用一个或多个装饰者包装一个对象。3. 既然装饰者和被装饰对象有相同的超类型,所以在任何需要原始对象的场合,可以用装饰过的对象替代它。原创 2014-01-26 15:07:06 · 656 阅读 · 0 评论 -
建造者(build)模式
建造者(build)模式背景 方案一: 当一个类的参数过多时,我们的常用方法一般是重叠构造器,即重载,比如有5个属性,一般我们会重载5个方法,输入参数从1到5不等。如 Dogdog = new Dog(“花花”); Dogdog = new Dog(“花花”,1,); Dogdog = new Dog(“花花”,1,原创 2014-01-26 11:13:46 · 3509 阅读 · 0 评论 -
单例模式
单例模式定义: 单例模式确保一个类只有一个实例,并提供一个全局访问点。包括两点:1. 避免其他类再自行产生实例,要想取得单例实例,通过单例类是唯一途径。2. 单例也提供对这个实例的全局访问点:当需要实例时,向类查询,它会返回单个实例。基本规则:1. 私有的构造方法,不允许使用者直接new对象,只能自己去构造。2. 公有原创 2014-01-24 15:54:10 · 540 阅读 · 0 评论 -
责任链模式
责任链模式定义 定义多个责任对象,每个对象负责不同的业务职责,将这些对象连成一条链,并沿着这条链传递请求,知道有一个对象处理它(或者每个对象都处理一遍)为止。 类图: 纯责任链:严格来讲,一个纯的责任链是“每次只有一个对象有机会来处理某个请求”。可以用if-else来描述,纯的责任链一定是if-else if-else if-…else..这种结构。也就是说原创 2014-01-24 14:29:05 · 729 阅读 · 0 评论 -
状态模式
状态模式定义:状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。状态模式是一种行为模式。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。 类图: 适用场景:1. 一个对象的行为取决于它的状态,并且它必须在运行时刻根据状原创 2014-01-22 17:51:51 · 629 阅读 · 0 评论 -
模板方法模式
模板方法模式定义: 模板方法模式是在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。类图:这里涉及到两种角色:1. 抽象模板:定义了一个或多个抽象操作,以便让子类实现。定义了一个模板方法,给出了一个顶级逻辑骨架,组装了操作的逻辑步骤,子类不可改变。2.原创 2014-01-22 10:23:23 · 549 阅读 · 0 评论 -
策略模式
策略模式定义: 策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。类图:组成:1. 抽象策略角色:策略类,通常是一个接口或抽象类2. 具体策略角色:具体策略类,实现或继承抽象策略角色,包装了具体的算法和行为。3. 环境角色:持有一个策略类的引用,最终给客户端调用。原创 2014-01-22 11:46:11 · 613 阅读 · 0 评论 -
软件设计原则
软件设计原则一、 "开放-封闭"原则(OCP)Open-Closed Principle原则讲的是:一个软件实体应当对扩展开放,对修改关闭。优点: 通过扩展已有软件系统,可以提供新的行为,以满足对软件的新的需求,使变化中的软件有一定的适应性和灵活性。 已有软件模块,特别是最重要的抽象层模块不能再修改,这使变化中的软件系统有一定的稳定性和延续性。例子:玉帝招安转载 2013-12-13 17:57:36 · 617 阅读 · 0 评论 -
观察者模式
观察者模式简介:出版者+订阅者=观察者模式 Subject 主题接口,也即可观察者(Observable),对象使用此接口注册为观察者,或者把自己从观察着中删除。每个主题可以有多个观察者。 ConcreteSubject 一个具体主题实现了主题接口,除了注册和撤销之外,具体主题还实现了notifyObservers()方法,这个方法用来在主题状态改变时更行原创 2013-10-31 17:40:36 · 582 阅读 · 0 评论 -
观察者模式
观察者模式简介:出版者+订阅者=观察者模式 Subject 主题接口,也即可观察者(Observable),对象使用此接口注册为观察者,或者把自己从观察着中删除。每个主题可以有多个观察者。 ConcreteSubject 一个具体主题实现了主题接口,除了注册和撤销之外,具体主题还实现了notifyObservers()方法,这个方法用来在主题状态改变时更行原创 2013-10-31 17:29:24 · 662 阅读 · 0 评论 -
适配器模式
适配器模式定义:适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。这个模式可以通过创建适配器进行接口转换,让不兼容的接口变成兼容。这可以让客户从实现的接口解耦。适配器模式充满着良好的OO设计原则:使用对象组合,以修改的接口包装被适配者,这种做法还有额外的优点: 被适配者的任何子类,都可以搭配着适配器使用。类图:`角色:原创 2014-02-10 15:45:54 · 663 阅读 · 0 评论