------------------------------ 状态模式(state) -------------------------------
(1)
State模式定义:
不同的状态,不同的行为; 或者说,每个状态有着相应的行为.
适用场合:
State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了.
(1)
State模式定义:
不同的状态,不同的行为; 或者说,每个状态有着相应的行为.
适用场合:
State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了.
-->适合于内部状态,不断循环变化的.
(2)
一个state,包括两部分: 对象 + 对象内部的属性(属性接口+具体属性)
一个对象,要有其属性,以及其setter,getter.且设置好其初始状态+一个调用显示状态的方法(里面就是状态调用自身的显示方法).
一个属性接口,应该有一个执行的方法.
一个具体属性,须包含对象进去,实现方法中,须设置对象下一个要显示的属性-->从而在对象下次调用方法时,其属性值会变化.
一个state,包括两部分: 对象 + 对象内部的属性(属性接口+具体属性)
一个对象,要有其属性,以及其setter,getter.且设置好其初始状态+一个调用显示状态的方法(里面就是状态调用自身的显示方法).
一个属性接口,应该有一个执行的方法.
一个具体属性,须包含对象进去,实现方法中,须设置对象下一个要显示的属性-->从而在对象下次调用方法时,其属性值会变化.
状态模式与观察者模式的区别:
状态模式,也跟观察者模式一样,是一对多的模式。但观察者模式是“一”变了,所有的“多”也会更新。
状态模式,强调的是:“多”是“一”的各个状态,“一”的各个状态,进行不断的循环。
如何建立一与多的关系:
“多”,都是实现一个接口的。所以,在“一”的类中,声明的是“多”的接口;若“多”中要建立与“一”的关系,只须直接在类中声明“一”即可。
(3)
代码:
public interface Color {
public void show();
代码:
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();
}
}
{
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));
}
}
{
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));
}
}
{
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));
}
}
{
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();
//不断调用,不断循环.
}
}
public static void main(String[] args) {
Light light=new Light();
//初始调用为红灯
light.showColor();
//再调用为绿灯
light.showColor();
//再调用为黄灯
light.showColor();
//不断调用,不断循环.
}
}
相关推荐
总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...
今天,我们将讨论两种常用的Java设计模式:状态模式和模板模式。 状态模式(State Pattern) --------------------- 状态模式是一种行为型设计模式,它允许对象在内部状态改变时改变它的行为。状态模式将状态封装...
以下是关于标题和描述中提到的Java常用设计模式的详细解释: 1. **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。在Java中,通常通过私有构造器和静态工厂方法实现。双检锁(Double-Check Locking)...
以下是对Java中常用设计模式的详细解释: 1. **单例模式**:单例模式确保一个类只有一个实例,并提供一个全局访问点。这种模式常用于配置管理、线程池或者数据库连接池等场景。实现方式有懒汉式(线程不安全)、...
### 常用设计模式及Java程序设计 #### 设计模式概述 设计模式是一种软件设计领域中的通用解决方案,用于描述解决常见设计问题的最佳实践。它不仅有助于提高代码的复用性和可读性,还能增强软件架构的灵活性和扩展...
以JAVA为例,汇总了十几种常用的设计模式,包括了:单例模式、工厂模式、建造者模式、适配器模式、装饰器模式、外观模式、命令模式、观察者模式、状态模式、策略模式、模板方法模式等。仅供学习使用。 相关文章请看...
本资料包聚焦于“JAVA程序常用设计模式”,旨在帮助中高级JAVA程序员进一步提升编程能力。 1. 单例模式:确保一个类只有一个实例,并提供一个全局访问点。在Java中,单例模式通常通过双重检查锁定、静态内部类或...
设计模式是软件工程中经过长期实践总结出的通用解决方案,它们描述了在特定情况下如何解决...通过阅读和学习提供的"常用设计模式java实现"压缩包中的例子,可以更好地理解和实践这些设计模式,从而提升Java编程技能。
设计模式是软件开发中的经典实践,它们为解决特定问题提供了通用、可复用的解决方案。在Java编程中,运用合适的设计模式可以提高代码的可维护性、可扩展性和可复用性。以下是关于Java版本设计模式实现demo的一些补充...
Java 常用设计模式是软件开发中的一种最佳实践,旨在提高代码的可重用性、可维护性和可扩展性。设计模式分为三大类:创建型模式、结构型模式和行为型模式。 **创建型模式**关注的是对象的创建过程,它们提供了在不...
Java设计模式是面向对象编程中的一种最佳实践,用于解决常见的设计问题并促进代码的可重用性和可维护性。...在Java开发中,了解并熟练掌握这些常用设计模式是成为一名专业开发人员的关键步骤之一。
这23个常用的设计模式涵盖了创建型、结构型和行为型三大类别,是每一个Java开发者应当熟悉并掌握的基础知识。 1. **创建型设计模式**:主要包括单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。单例...
在这个Java常用设计模式的文档中,我们将深入探讨以下几种模式:单例模式、工厂模式、策略模式以及观察者模式。 **单例模式**是一种限制类实例化次数的模式,确保一个类只有一个实例,并提供一个全局访问点。在Java...
这个压缩包“Java常用设计模式源码”显然提供了多种常见的Java设计模式实现,适合初学者进行学习和实践。 1. **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。在Java中,有饿汉式、懒汉式、双重检查...
本资源包含了2016年6月20日关于Java常用设计模式的源码和作者的心得体会,这对于我们深入理解和应用这些模式具有很大的帮助。 首先,我们要了解设计模式的基本分类。设计模式分为三大类:创建型模式(Creational ...
这份资料详细介绍了在Java编程中常用的23种设计模式,旨在提升开发者对于软件设计的理解和应用能力,从而写出更加高效、可维护和可扩展的代码。 首先,我们来看一下23种设计模式的分类:它们可以分为三大类,即创建...
以下是对给定文件中提到的几种Java设计模式的详细解析。 #### 1. 单例模式 (Singleton Pattern) 单例模式是一种常用的对象创建型模式,其目的是确保一个类只有一个实例,并提供一个全局访问点。实现单例模式的关键...
Java代码积累:并发 设计模式 数据结构 使用容器 实用 类 基础知识 并发性 演示线程的生命周期 生产者-消费者 设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者...