`
xuedong
  • 浏览: 287027 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java常用设计模式之状态模式

阅读更多
------------------------------ 状态模式(state) -------------------------------
(1)
State模式定义:
不同的状态,不同的行为; 或者说,每个状态有着相应的行为.
适用场合:
State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了.
-->适合于内部状态,不断循环变化的.
(2)
一个state,包括两部分: 对象 + 对象内部的属性(属性接口+具体属性)
一个对象,要有其属性,以及其setter,getter.且设置好其初始状态+一个调用显示状态的方法(里面就是状态调用自身的显示方法).
一个属性接口,应该有一个执行的方法.
一个具体属性,须包含对象进去,实现方法中,须设置对象下一个要显示的属性-->从而在对象下次调用方法时,其属性值会变化.
 
状态模式与观察者模式的区别:
状态模式,也跟观察者模式一样,是一对多的模式。但观察者模式是“一”变了,所有的“多”也会更新。
状态模式,强调的是:“多”是“一”的各个状态,“一”的各个状态,进行不断的循环。
 
如何建立一与多的关系:
“多”,都是实现一个接口的。所以,在“一”的类中,声明的是“多”的接口;若“多”中要建立与“一”的关系,只须直接在类中声明“一”即可。
 
 
(3)
代码:
public interface Color {
 public void show();
}
package state;
class Light
{
 Color color;
 public Color getColor() {
  return color;
 }
 public void setColor(Color color) {
  this.color = color;
 }
 
 public Light()
 {
  color=new RedColor(this);
 }
 
 public void showColor()
 {
  color.show();
 }
 
}
class RedColor implements Color
{
 Light light;
 public RedColor(Light light)
 {
  this.light=light;
 }
 
 public void show()
 {
 System.out.println("the color is red,the car must stop !");
 System.out.println("write down all logic shoud do this in this state.....");
  light.setColor(new GreenColor(light));
 }
}
class GreenColor implements Color
{
 Light light;
 public GreenColor(Light light)
 {
  this.light=light;
 }
 
 public void show()
 {
 System.out.println("the color is green,the car can run !");
 System.out.println("write down all logic shoud do this in this state.....");
  light.setColor(new YellowColor(light));
 }
}
class YellowColor implements Color
{
 Light light;
 public YellowColor(Light light)
 {
  this.light=light;
 }
 
 public void show()
 {
 System.out.println("the color is yellow,the car shoud stop !");
 System.out.println("write down all logic shoud do this in this state.....");
  light.setColor(new RedColor(light));
 }
}
public class CarLight {
 public static void main(String[] args) {
  Light light=new Light();
  
  //初始调用为红灯
  light.showColor();
  //再调用为绿灯
  light.showColor();
  //再调用为黄灯
  light.showColor();
  //不断调用,不断循环.  
 }
}
 
 

 

分享到:
评论

相关推荐

    java常用设计模式-状态模式

    java常用设计模式-状态模式

    java常用23中设计模式

    总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...

    Java常用设计模式例子

    以JAVA为例,汇总了十几种常用的设计模式,包括了:单例模式、工厂模式、建造者模式、适配器模式、装饰器模式、外观模式、命令模式、观察者模式、状态模式、策略模式、模板方法模式等。仅供学习使用。 相关文章请看...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    Java代码积累:并发 设计模式 数据结构 使用容器 实用 类 基础知识 并发性 演示线程的生命周期 生产者-消费者 设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者...

    java设计模式

    本书使用Java语言详细讲解常用的软件设计模式。全书共26章,内容包括设计模式概述、面向对象设计原则、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式...

    java中的设计模式,主要的设计模式

    设计模式:(常用23种-----像内功心法) 1. 设计模式不是一个知识点 2. 设计模式是一种设计经验的总结 3. 设计模式是用来解决某些场景下的某一类问题--------通用的解决方案 4. 有了设计模式之后,可以让代码更容易被...

    Java 之23种设计模式解析

    java之23中常用设计模式详解 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观...

    java版本的设计模式的实现demo

    设计模式是软件开发中的经典实践,它们为解决特定问题提供了通用、可复用的解决方案。在Java编程中,运用合适的设计模式可以提高代码的可维护性、可扩展性和可复用性。以下是关于Java版本设计模式实现demo的一些补充...

    设计模式文档

    1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象...

    设计模式例子(java版本)

    用java写的几个常用的设计模式。包括 工厂模式、适配器模式、桥接模式、建造者模式、命令模式、组合模式、装饰模式、外观模式、工厂方法模式、迭代器模式、观察者模式、代理模式、单例模式、状态模式、策略模式、...

    浅析java常用的设计模式(doc-23页).doc

    浅析java常用的设计模式(doc 23页) 1、工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即 可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修 改。如:如何...

    [vip专享]java设计模式实验报告.pdf

    一、实验目的 使用 PowerDesigner 和任意一种面向对象编程语言实现几种常用的设计模式,加深对 这些模式的理解,包括装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器 模式、观察者模式、状态模式、策略...

    leetcode分类-DesignPatternAndAlgorithm:常用设计模式和算法,练习用

    常用设计模式和算法,练习用。 一、设计模式: 创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式 结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式 ...

    java高级特性,涵盖了多种java常用的一些例子

    涉及多种线程,死锁,同步队列,异步线程,涵盖了java的自定义注解及反射,包含了23种设计模式,含注释, 线程1(基本应用) 线程2(同步,死锁,线程池) 注解和泛型 Java 注解(Annotation)又称 Java 标注,是 ...

    二十三种设计模式【PDF版】

    使用类再生的两个方式:组合(new)和继承(extends),这个已经在 thinking in java中提到过. 设计模式之 Proxy(代理) 以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 设计模式之 Facade(门面?) 可扩展的使用...

    java-design-patterns:简单的Java设计模式指南

    基于以下示例的常用Java设计模式指南: “设计模式:可重用的面向对象软件的元素”-Gamma等 “ Head First设计模式”-Freeman等 “ Java设计模式要点”-Tony Brevis 我将临时向项目添加新模式。 每个模式都包含...

    Java基础知识点总结.docx

    状态模式 233 空对象模式 236 策略模式★★★★★ 238 模板模式 240 访问者模式 244 设计模式总结★★★★★ 247 二十二、 Java其他总结 248 Java JVM知识点总结 248 equals()方法和hashCode()方法 270 数据结构 273...

    积分兑换系统java源码-DesignPattern:设计模式

    4.行为型设计模式:策略、责任链、模板方法、状态常用,观察者、迭代器会使用已封装好的,备忘录、中介者、命令、访问者不常用,解释器一般用不到。 设计原则 开闭原则 一个软件实体,如类、模块、方法对扩展开放,...

Global site tag (gtag.js) - Google Analytics