入门设计模式之状态模式

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。博客源地址为zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/80933586   学习更多设计模式请参考:入门设计模式之汇总篇    状态模式:允许一个对象在其内部状态改变时改变其行为。
版权声明:本文为博主原创文章,未经博主允许不得转载。博客源地址为zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/80933586

 

 

学习更多设计模式请参考:入门设计模式之汇总篇 

 

 

 

状态模式:允许一个对象在其内部状态改变时改变其行为。

 

举一个简单的小例子,我们在对一个小姐姐搭讪的时候,根据小姐姐的心情如何我们可能会得到不同的回复。

 

看一下类图

 

 

  1. Girl:抽象状态接口:用于封装男孩对象搭讪小姐姐获得回复的接口
  2. AngryGirl、HappyGirl:两个状态实现类。不同的状态就对应了男孩在不同时刻获得的回复。
  3. Boy:持有一个状态实例。

 

看一下代码:

public interface Girl {
    public void say();
}

public class AngryGirl implements Girl {
    @Override
    public void say() {
        System.out.println("滚");
    }
}

public class HappyGirl implements Girl {
    public void say(){
        System.out.println("你好哦,小哥哥");
    }
}

public class Boy {
    private Girl girl;

    public void say(){
        this.girl.say();
    }

    public void setGirl(Girl girl){
        this.girl=girl;
    }
}
 interface Girl {
    public void say();
}

public class AngryGirl implements Girl {
    @Override
    public void say() {
        System.out.println("滚");
    }
}

public class HappyGirl implements Girl {
    public void say(){
        System.out.println("你好哦,小哥哥");
    }
}

public class Boy {
    private Girl girl;

    public void say(){
        this.girl.say();
    }

    public void setGirl(Girl girl){
        this.girl=girl;
    }
}

 

如此,Boy持有不同状态的Girl对象时获取的回复是不同的,这样就实现了一个简单的状态模式。

 

 

 

本文出自https://zhixiang.org.cn/#/blog/read/ccfb4d18-3b6c-4a35-a238-7b19fafe73a1,转载请保留。

 

 

 

学习更多设计模式请参考:入门设计模式之汇总篇 

 

状态模式:允许一个对象在其内部状态改变时改变其行为。

 

举一个简单的小例子,我们在对一个小姐姐搭讪的时候,根据小姐姐的心情如何我们可能会得到不同的回复。

 

看一下类图

 

 

  1. Girl:抽象状态接口:用于封装男孩对象搭讪小姐姐获得回复的接口
  2. AngryGirl、HappyGirl:两个状态实现类。不同的状态就对应了男孩在不同时刻获得的回复。
  3. Boy:持有一个状态实例。

 

看一下代码:

public interface Girl {
    public void say();
}

public class AngryGirl implements Girl {
    @Override
    public void say() {
        System.out.println("滚");
    }
}

public class HappyGirl implements Girl {
    public void say(){
        System.out.println("你好哦,小哥哥");
    }
}

public class Boy {
    private Girl girl;

    public void say(){
        this.girl.say();
    }

    public void setGirl(Girl girl){
        this.girl=girl;
    }
}
 interface Girl {
    public void say();
}

public class AngryGirl implements Girl {
    @Override
    public void say() {
        System.out.println("滚");
    }
}

public class HappyGirl implements Girl {
    public void say(){
        System.out.println("你好哦,小哥哥");
    }
}

public class Boy {
    private Girl girl;

    public void say(){
        this.girl.say();
    }

    public void setGirl(Girl girl){
        this.girl=girl;
    }
}

 

如此,Boy持有不同状态的Girl对象时获取的回复是不同的,这样就实现了一个简单的状态模式。


 

本文出自https://zhixiang.org.cn,转载请保留。

相关文章
|
7月前
|
设计模式
设计模式之 State(状态模式)
设计模式之 State(状态模式)
43 0
|
2月前
|
设计模式 Java
【设计模式】工厂模式(定义 | 特点 | Demo入门讲解)
【设计模式】工厂模式(定义 | 特点 | Demo入门讲解)
62 2
|
2月前
|
设计模式 XML Java
【设计模式】装饰器模式(定义 | 特点 | Demo入门讲解)
【设计模式】装饰器模式(定义 | 特点 | Demo入门讲解)
34 0
|
2月前
|
设计模式 传感器
【设计模式】观察者模式(定义 | 特点 | Demo入门讲解)
【设计模式】观察者模式(定义 | 特点 | Demo入门讲解)
44 0
|
2月前
|
设计模式 算法 Java
【设计模式】策略模式(定义 | 特点 | Demo入门讲解)
【设计模式】策略模式(定义 | 特点 | Demo入门讲解)
30 0
|
3月前
|
设计模式 C# 开发者
C#设计模式入门实战教程
C#设计模式入门实战教程
|
3月前
|
设计模式 Java 测试技术
Java设计模式-状态模式(18)
Java设计模式-状态模式(18)
|
4月前
|
设计模式 网络协议 Java
【十五】设计模式~~~行为型模式~~~状态模式(Java)
文章详细介绍了状态模式(State Pattern),这是一种对象行为型模式,用于处理对象在其内部状态改变时的行为变化。文中通过案例分析,如银行账户状态管理和屏幕放大镜工具,展示了状态模式的应用场景和设计方法。文章阐述了状态模式的动机、定义、结构、优点、缺点以及适用情况,并提供了Java代码实现和测试结果。状态模式通过将对象的状态和行为封装在独立的状态类中,提高了系统的可扩展性和可维护性。
【十五】设计模式~~~行为型模式~~~状态模式(Java)
|
5月前
|
设计模式 JavaScript Go
js设计模式【详解】—— 状态模式
js设计模式【详解】—— 状态模式
83 7
|
5月前
|
设计模式 Java 数据安全/隐私保护
Java中的设计模式:从入门到精通
Java中的设计模式:从入门到精通