`
chendw_hz
  • 浏览: 11269 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论
文章列表
调停者(Mediator)模式 调停者模式是常常被滥用的几个模式之一,在下列情况下不应当使用调停者模式。 (1)不应当在责任划分混乱的时候使用 (2)不应当对“数据类”和“方法类”使用          初级设计师常常会设计 ...
访问者模式
状态模式
备忘录模式又叫快照模式或者Token模式 是对象的行为模式 备忘录模式是备忘录对象保存了发起者对象,在发起者对象变化之后,可以恢复变化之前的状态。 1,备忘录模式的角色: 发起者角色:负责创建备忘录角色,且将当前的对象保存在备忘录对象中去。。 备忘录角色:保存发起者角色的状态。 负责人角色:保存备忘录对象。不负责备忘录角色的内容。 2,模式实例  现在以我们在读书的时候,老是经常用黑板写字。经常想恢复已经被擦掉的文字。以现在以老是想恢复黑板上已经被擦掉的文字。这样一个场景。很适合使用备忘录模式。 首先对角色进行划分。 老师是发起人角色,粉笔是备忘录角色。黑板是是负责人角色。负责 ...
命令模式核心是封装命令类(请求类),每一个命令类作单独的类,分离命令请求者和接受命令执行者。是把请求或者操作封装到一个类中。 命令模式把发出命令和执行命令的责任分割开。 1,命令模式的角色划分: 客户角色:创建命令(请求)对象,确定接收者。 命令角色:抽象命令类接口,提供命令类的统一的抽象接口。 具体命令角色:确定接受者,以及调用接受者的相应方法。 请求者角色:调用命令对象执行请求,发送命令请求,不具有创建命令的功能,仅仅是发送命令。 接受者角色:具体执行一个请求。   2,现在以电脑播放音乐为例,首先对业务场景进行分析。 人是客户端,相当于创建一个个需要播放(录制)音乐的的 ...
责任链模式是一种行为模式。多个处理类组成一个责任链,责任链处理同一个请求,如果处理类不处理就传递给下一个处理类来处理,每个处理类保持对下一个处理类的引用,直到遍历完所有链类直到有类来处理为止。 纯的责任链有两种行为:要么处理掉,要么不处理掉。 不纯责任链:处理器只处理其中一部分请求逻辑,责任链中所有处理器类可以不处理请求。   这里以 病人看病。刚好 脚受伤。。不知道找哪个科室。分别找内科。外科。。皮肤科 最后找到了骨科。到了。骨科医生再也没推辞了。二话不说就给他处理掉了。。 每个科室的医生都各自负责自己分内的事。所有这些科室组织成一个责任链。然后分别找这些科室。。找对了科室就会处理掉 ...
这个模式相对来说也比较简单。
策略模式是比较常用的一种模式.封装不算法。每一个算法封装在不同类中。然后根据客户端的需求。选择相应的算法。 策略模式主要角色: 环境角色:一般会持有策略类的父类引用。 抽象策略角色:提供策略类的共有行为和接口。 具体策略角色:每个策略包装一种算法和行为。 现在以人不同方式回家为例。。把每种回家方式封装成一个不同的算法,分别封装在不同的类中 //抽象回家方式接口。封装一个父类接口 public interface GoHomeStrategy{    //不同回家方式,不同算法行为    public void howGoHome(); }   //走路回家的策略方式。 ...
不变模式比较简单,一般设计成一个类或者一个继承等级结构。 不变模式分弱不变模式和强不变模式 弱不变模式: 对象的状态不会改变,不提供任何修改对象状态的方法。所有的属性都是私有的。  子类继承可能存在修改内部对象 的方法。 强不变模式:   类的设计成final类,不可被继承。对象的内部状态初始化时,就固定。不提供任何修改内部状态的方法。如果引用的外部对象是可变的。提供复制之后的引用的外部对象去操作。 优点:   由于不变对象在创建时 就已经初始化了对象的内部状态。所以他是线程安全的。可以被共享的。 缺点:   需要不变对象的状态时。需要重新创建一个新的对象去维护这个状态。导致 ...
桥梁设计是将抽象化和实现化分离。抽象化就是指模型的抽象化,是实现化是行为的实现化。这个是模式讲模型和行为进行分离。然后让各自的两个等级结构各自独立的变化。然后行为的等级结构组合到模型的等级结构中。可以任意组合。实现多项功能。 角色如下:  抽象化角色:实际上是对实体领域对象的抽象,不包含这个实体的行为实体。但是具体子类会保存实现化角色的引用。 修正抽象化角色:这个实际上抽象化角色的子类。但是会和实现化角色组合一起产生新的新的行为。 实现化角色:对领域对象变化的行为的封装。把行为进行抽象化。 具体实现化角色:实现化角色的子类。 实际上桥梁模式对领域对象和行为进行分离的典型应用模式。领域 ...
为什么要 用适配器模式。就是把两个完全不关联或者不相同的类纠合一起时才使用这个模式。 这个模式涉及到角色: 源角色:需要适配的角色。 目标角色:期待使用的接口。 适配器角色:把源角色转化成目标角色。这个是模式的核心。着重转化功能。 适配器模式分两种情况: 类的适配器模式和对象的适配器模式 。 首先来讲讲类的适配器模式: 如下例: 指方为圆的故事。 //方形接口 public interface Square{    //方形具有画方形的功能   public void drawSquare();    //是否是图形   public boolean isGraphical( ...
享元模式的角色划分: 1,抽象享元角色:享元角色需要实现的公共接口。外蕴状态可以通过商业方法以参数的形式传入。 2,具体享角色:负责维护内蕴状态。且提供内蕴含状态的空间。内蕴状态不与环境有关,对象初始化时,内蕴含状态就已经产生。 3,享元工厂角色:负责维护和管理享元角色,在工厂中没有找到相应的享元对象,则负责创建相应的享元对象。  本质工厂角色应该是个享元对象的容器。 4,客户端角色:自行维护外蕴状态,外蕴跟环境有关。 享元模式分单纯享元模式和复合享元模式  这里就讲讲单纯享元模式。 下面以不同口味的冰棒为例。 //冰棒接口 public interface  Popsicle ...
装饰器模式的形象理解油漆工刷油漆。油漆工是装饰器角色,被刷者是被装饰器角色。 装饰器分四个角色 抽象构件角色:增加附加功能的一个抽象接口。也就是被装饰的一个抽象角色。 具体构件角色:抽象构件角色的实现类。 装饰器角色:持有抽象构件觉得一个变量引用。切也要与抽象构件角色同一接口。 具体装饰器角色:装饰器角色的实现类。具体附加功能到抽象角色。 说了这么多。。还是用实例来描述比较形象。下面一女孩子不同穿着来说明 譬如女孩子喜欢穿裙子。喜欢咋马尾辫。不同打扮。但是这个女孩子还是没有变。 //女孩接口 public interface Girl{    //女孩子逛街行为    pu ...
组合设计模式(部分-整体设计模式) 主要角色涉及三个 抽象构件角色(component):规定参加参加组合的对象共有的行为,这个接口可以用来管理所有的子对象。 树叶构件角色:参加对象组合的树叶对象。给出add(),remove()之类的方法的平庸实现。一般针对树叶构件的角色不提供add(),remove()等管理子对象的方法。 树枝构件角色:参加组合的对象含有子对象的对象。 组合模式以树结构图的形式去理解。树枝节点可以添加和管理子类元素。树叶节点不具备添加和管理子组件的能力。 所以又分透明式和安全式。 透明式  下面以我的电脑中的文件夹为例,文件可以增加文件。文件不能再添加子文 ...
设计最常遵守的6大原则 第一原则: “开--闭”原则,一个软件实体(或者说一个模块)对修改关闭,对扩展开放。   针对一个模块。在不修改代码前提下可以被扩展。要做一下两点 1,抽象化,抽象化可以导出不同的具体化。 2,对可变性的封装,原则是多个可变性应该封装在不同的类中 第二原则   里氏代换原则。 1,使用对象的基类,都可以用子类代换。任何使用基类的地方都适用子类 第三原则   依赖倒转原则   抽象不应当依赖与细节,细节不应当依赖抽象 第四原则 接口隔离原则 一个接口都代表一个角色,不应当把不同的角色放在同一个接口里面。否则就是接口污染。 第五原则   优先使用合成/聚合原则 第六 ...
Global site tag (gtag.js) - Google Analytics