源码:
public class StatePattern {
interface Position{
public String getNextPostion(Programer p);
public String getLastPostion(Programer p);
}
class Manager implements Position{
public String getNextPostion(Programer p) {
p.position = new General();
return "项目总监";
}
public String getLastPostion(Programer p) {
p.position = new GroupLeader();
return "项目组长";
}
}
class Coder implements Position{
public String getNextPostion(Programer p) {
p.position = new GroupLeader();
return "项目组长";
}
public String getLastPostion(Programer p) {
p.position = new Coder();
return "Coder";
}
}
class GroupLeader implements Position{
public String getNextPostion(Programer p) {
p.position = new Manager();
return "项目经理";
}
public String getLastPostion(Programer p) {
p.position = new Coder();
return "Coder";
}
}
class General implements Position{
public String getNextPostion(Programer p) {
return "CTO";
}
public String getLastPostion(Programer p) {
p.position = new Manager();
return "项目经理";
}
}
class Programer{
private Position position;
public Programer(){
System.out.println("我成程序员了,现在还只是Coder.");
position = new Coder();
}
public void raised(){
System.out.println("我升职了,现在的职位是:"+position.getNextPostion(this));
}
public void fall(){
System.out.println("悲剧了,我降职了,现在的职位是:"+position.getLastPostion(this));
}
public void workHard(){
System.out.println("努力工作.....");
}
public void worklazy(){
System.out.println("工作太累了,先玩会再说.....");
}
public void goalway(){
System.out.println("看来我真的是老了,不适合做程序员了,嗨!");
}
}
public static void main(String[] args) {
StatePattern sp = new StatePattern();
Programer p =sp.new Programer();
p.workHard();
p.raised();
p.workHard();
p.raised();
p.workHard();
p.raised();
p.worklazy();
p.fall();
p.worklazy();
p.fall();
p.worklazy();
p.fall();
p.goalway();
}
}
运行结果:
我成程序员了,现在还只是Coder.
努力工作.....
我升职了,现在的职位是:项目组长
努力工作.....
我升职了,现在的职位是:项目经理
努力工作.....
我升职了,现在的职位是:项目总监
工作太累了,先玩会再说.....
悲剧了,我降职了,现在的职位是:项目经理
工作太累了,先玩会再说.....
悲剧了,我降职了,现在的职位是:项目组长
工作太累了,先玩会再说.....
悲剧了,我降职了,现在的职位是:Coder
看来我真的是老了,不适合做程序员了,嗨!
分享到:
相关推荐
本资源是一个Java版的设计模式编码实现,涵盖了全部二十三种经典设计模式,旨在帮助开发者更好地理解和应用这些模式。 首先,我们来逐一探讨这二十三种设计模式: 1. **单例模式**:确保一个类只有一个实例,并...
在编码器模式下,定时器可以触发中断,程序在中断服务函数中处理编码器信号,更新电机状态。例如,可以更新位置寄存器、计算速度、处理错误或更新电机控制算法。 6. **应用示例** STM32 F103在伺服电机、步进电机...
该示例项目展示了如何利用TI的驱动库函数来控制编码器电机,并实现定速和定角控制。这里我们将深入探讨其中的关键技术和知识点。 1. **MSP432P401R 微控制器** MSP432P401R是德州仪器(TI)的一款超低功耗混合信号...
总结来说,STM8单片机通过编码器接口配合TIM1定时器,可以实现对旋转设备的精确控制和状态监测。无论是查询方式还是中断方式,都能有效地获取编码器的脉冲信息,从而实现设备的精确控制。在编程实践中,理解STM8的...
21. **状态模式**:允许一个对象在其内部状态改变时改变它的行为。State模式可以将对象的行为状态封装在独立的类中,使得对象可以在不同状态间自由切换。 22. **策略模式**:定义一系列的算法,并将每一个算法封装...
19. **状态模式(State)**:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 20. **访问者模式(Visitor)**:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变元素的类...
【Hi3516板卡状态机示例】是一个针对基于Hi3516芯片的嵌入式系统设计的教程,旨在帮助开发者理解和实现状态机(Finite State Machine, FSM)的概念。状态机在嵌入式系统中广泛应用于处理各种序列化操作,如设备控制...
这样,当对象状态变化时,行为也会随之改变,而无需在条件语句或复杂的if-else结构中硬编码这些行为。 在【例 13-1】计算机内存监控程序中,应用了状态模式来管理内存状态。程序通过监控内存的空闲率(free ratio)...
STM32编码器模式库函数版是专为在STM32微控制器上处理编码器输入信号而设计的软件资源。编码器是一种传感器,通常用于测量旋转角度或速度,广泛应用于各种自动化设备,如机器人、无人机、电机控制以及平衡车等。STM...
状态模式(State Pattern)允许对象在内部状态改变时改变其行为,看起来好像对象改变了它的类。 最后,模板方法模式(Template Method Pattern)是一种行为型模式,定义了一个操作中的算法骨架,而将一些步骤延迟到...
20. 状态模式(State):允许对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。C#中,通过状态对象和上下文对象实现状态切换。 21. 策略模式(Strategy):定义一系列的算法,并将每一个算法封装...
19. **状态模式**:允许对象在其内部状态改变时改变其行为,对象看起来似乎修改了它的类。 20. **策略模式**:定义一系列算法,并将每一个算法封装起来,使它们可以相互替换。策略使算法的变化独立于使用它的客户端...
具体到PCA9633的期间控制代码,这部分代码将涉及初始化I2C通信,配置PCA9633的工作模式,以及根据解码后的RC5指令更新LED的状态。例如,代码可能包含设置I2C地址、读写寄存器、设置亮度级别等操作。此外,对于串口...
这里提供的“java设计模式 部分 代码示例”压缩包文件包含了对多种Java设计模式的实现,通过实际代码来帮助理解这些模式的工作原理。 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供全局访问点。在...
单片机多按键状态机的...在提供的"05-KEY"文件中,可能包含了一些示例代码或教程,用于指导实际的单片机多按键状态机实现。通过学习和实践这些材料,可以加深对这一主题的理解,并掌握在实际项目中应用该技术的能力。
在这个“java-03”文件中,可能包含了上述各种设计模式的Java实现,比如: - 单例模式:确保一个类只有一个实例,并提供一个全局访问点。 - 工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - ...
21. **状态模式(State)**:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎改变了它的类。 22. **策略模式(Strategy)**:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。让...
程序描述章节,会进一步介绍C语言实现的状态机的细节,如数据类型的定义(如枚举和结构体)、主要功能(如状态转换逻辑)、状态机的构建方法(如状态机图的映射),以及示例代码来展示实际操作流程。 在示例DEMO中...
### MATLAB中的卷积编码与Viterbi译码实现详解 #### 一、卷积编码基础概念 卷积编码是一种常见的前向错误校正(FEC)技术,在数字通信系统中广泛应用于提高传输可靠性。其基本原理是将输入的信息比特序列经过编码器...