`
isiqi
  • 浏览: 16734438 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

行为型模式

阅读更多
Chain of Responsibility
//与Decorator的实现形式相类似,
//Decorator是在原来的方法之上进行添加功能,而
//Chain则是判断信号如果不是当前处理的则转交个下一个节点处理
//我可以使用if分支来实现相同的效果,但是不够灵活,链上的每个节点是可以替换增加的,相对
//比较灵活,我们可以设计接口实现对节点的增删操作,而实现更方便的效果
//这个是一个链状的结构,有没有想过使用环状结构

interfaceHandler...{
voidhandRequest(intsignal);
}


classCHandler1implementsHandler...{
privateHandlerhandler;

publicCHandler1(Handlerhandler)...{
this.handler=handler;
}


publicvoidhandRequest(intsignal)...{
if(signal==1)...{
System.out.println(
"handlesignal1");
}

else...{
handler.handRequest(signal);
}

}

}


classCHandler2implementsHandler...{
privateHandlerhandler;

publicCHandler2(Handlerhandler)...{
this.handler=handler;
}


publicvoidhandRequest(intsignal)...{
if(signal==2)...{
System.out.println(
"handlesignal2");
}

else...{
handler.handRequest(signal);
}

}

}


classCHandler3implementsHandler...{
publicvoidhandRequest(intsignal)...{
if(signal==3)...{
System.out.println(
"handlesignal3");
}

else...{
thrownewError("can'thandlesignal");
}

}

}


classChainClient...{
publicstaticvoidmain(String[]args)...{
Handlerh3
=newCHandler3();
Handlerh2
=newCHandler2(h3);
Handlerh1
=newCHandler1(h2);

h1.handRequest(
2);
}

}

Interpreter
//感觉跟Composite很类似,只不过他分文终结符和非终结符

//TemplateMethod

abstractclassTemplateMethod...{
abstractvoidamd1();

abstractvoidamd2();

//此方法为一个TemplateMethod方法
publicvoidtmd()...{
amd1();
amd2();
}

}

State
//标准型
//状态和操作不应该耦合在一起
classContexta...{
privateStatest;

publicContexta(intnst)...{
changeStfromNum(nst);
}


publicvoidchangeStfromNum(intnst)...{
if(nst==1)...{
st
=newCStatea1();
}

elseif(nst==2)...{
st
=newCStatea2();
}


thrownewError("badstate");
}


voidrequest()...{
st.handle(
this);
}

}


interfaceState...{
voidhandle(Contextacontext);
}


classCStatea1implementsState...{
publicvoidhandle(Contextacontext)...{
System.out.println(
"state1");
//也许在一个状态的处理过程中要改变状态,例如打开之后立即关闭这种效果
//context.changeStfromNum(2);
}

}


classCStatea2implementsState...{
publicvoidhandle(Contextacontext)...{
System.out.println(
"state2");
}

}


//工厂型
//根据状态不通生成不同的state

classStateFactory...{
publicstaticStategetStateInstance(intnum)...{
Statest
=null;

if(num==1)...{
st
=newCStatea1();
}

elseif(num==2)...{
st
=newCStatea2();
}


returnst;
}

}

Visitor

//双向引用,使用另外的一个类调用自己的方法,访问自己的数据结构
interfaceVisitor...{
voidvisitElement(Elementdelement);
}


classCVisitorimplementsVisitor...{
publicvoidvisitElement(Elementdelement)...{
element.operation();
}

}


interfaceElementd...{
voidaccept(Visitorvisitor);

voidoperation();
}


classCElementdimplementsElementd...{
publicvoidaccept(Visitorvisitor)...{
visitor.visitElement(
this);
}


publicvoidoperation()...{
//实际的操作在这里
}

}


classClientd...{
publicstaticvoidmain()...{
Elementdelm
=newCElementd();
Visitorvis
=newCVisitor();

vis.visitElement(elm);
}

}
Iteretor
interfaceStructure...{
interfaceIteratora...{
voidfirst();

booleanhasElement();

Objectnext();

}

}


classStructure1implementsStructure...{
Object[]objs
=newObject[100];

//使用内部类是为了对Struture1的数据结构有完全的访问权
classIteratora1implementsIteratora...{
intindex=0;

publicvoidfirst()...{
index
=0;
}

http://images.csdn.net
分享到:
评论

相关推荐

    12.4.4 设计模式(行为型模式).avi

    12.4.4 设计模式(行为型模式)12.4.4 设计模式(行为型模式)12.4.4 设计模式(行为型模式)12.4.4 设计模式(行为型模式)12.4.4 设计模式(行为型模式)12.4.4 设计模式(行为型模式)12.4.4 设计模式(行为型模式)12.4.4 设计...

    23种设计模式,创建型模式共5种,结构型模式7种,行为型模式11种

    设计模式分为三大类:创建型模式、结构型模式和行为型模式。 **创建型模式**关注的是对象的创建。共有五种创建型模式: 1. **工厂方法模式**:它定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法...

    设计模式3-行为型模式

    其中,行为型模式主要着眼于对象间的交互,以及如何有效地分配和管理职责,使软件设计更加灵活、易于扩展和维护。本文将详细介绍行为型设计模式,并深入分析两种典型的行为模式:职责链模式和命令模式。 首先,让...

    c#设计模式 行为型模式 实验报告+源代码

    c#设计模式 行为型模式 包括8个设计模式的实验报告+源代码。实验报告包括实验类图和个人总结的一些小技巧,源代码。包括:职责链模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略...

    C#面向对象设计模式纵横谈\18 行为型模式Iterator迭代器模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不... 这是第18节:行为型模式Iterator迭代器模式

    (行为型模式) Strategy 策略模式

    C#面向对象设计模式 (行为型模式) Strategy 策略模式 视频讲座下载

    行为型模式+结构型模式+创建型模式:三大设计模式实例剖析与深入解读

    在给定的标题和描述中,我们关注的是三种主要的设计模式类别:行为型模式、结构型模式和创建型模式。下面将分别对这三大类模式进行详细阐述,并通过实例剖析它们的核心概念和应用场景。 **行为型模式**主要关注对象...

    C#面向对象设计模式纵横谈(22):(行为型模式) State 状态模式

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。在C#编程中,这种模式被广泛应用于处理具有多种状态的对象,使得对象的状态转换更加清晰和易于管理。 状态模式的...

    设计模式-创建型模式、结构型模式和行为型模式

    按照不同的功能特性,设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 #### 二、创建型模式 创建型模式主要用于解决对象创建的过程,旨在简化对象创建的复杂度,同时保持对象创建的灵活性。主要...

    c++设计模式-行为型模式-访问者模式

    c++设计模式-行为型模式-访问者模式;qt工程;c++简单源码; 访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新...

    JAVA设计模式,常用创建型、结构型、行为型模式介绍和代码示例

    ### JAVA设计模式详解:创建型、结构型、行为型模式介绍及代码示例 #### 一、概述 在软件开发过程中,设计模式提供了一系列解决常见问题的模板,帮助开发者更高效地编写高质量代码。设计模式通常被划分为三种类型...

    L14-设计模式-行为型模式v21

    行为型模式 行为型模式(Behavioral Patterns)是设计模式的一种,关注对象行为功能上的抽象,从而提升对象在行为功能上的可拓展性,能以最少的代码变动完成功能的增减。 在设计模式中,行为型模式主要包括以下几...

    基于Python的行为型模式设计.pdf

    行为型模式是软件设计模式中的一个重要分类,它关注对象之间的通信和控制流程。在设计模式领域,1989年提出的23种设计模式已成为软件开发中的宝贵资源。这些设计模式在不同的编程语言中得到了广泛的应用,而Python...

    c++设计模式-行为型模式-责任链模式

    c++设计模式-行为型模式-责任链模式;qt工程;c++简单源码; 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的...

    设计模式之行为型模式代码.zip

    在软件工程中,设计模式是解决常见编程问题的可重用解决方案。行为型设计模式主要关注对象...在"设计模式之行为型模式代码"这个压缩包中,你将找到这些模式的示例代码,通过学习和实践,可以更好地理解和运用这些模式。

    行为型模式讲义

    GoF的行为型模式讲义

    设计模式之11个行为型模式

    行为型模式(BehavioralPattern)是对在不同的对象之间划分责任和算法的抽象化。行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。在系统运行时,对象并不是孤立的,它们可以通过相互通信与协作...

    基于Python的行为型模式设计.zip

    行为型模式是软件设计模式中的一个重要类别,它们主要关注对象之间的责任分配和交互。在Python编程语言中,我们可以利用这些模式来提高代码的可读性、可维护性和灵活性。本资料"基于Python的行为型模式设计.zip"包含...

    实验5:行为型模式应用实验(2)

    在本实验"实验5:行为型模式应用实验(2)"中,我们将深入探讨软件设计中的行为型模式。这些模式主要关注对象之间的交互和职责分配,以提高代码的灵活性、可读性和可维护性。实验代码是理解这些模式实际应用的关键。...

Global site tag (gtag.js) - Google Analytics