博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
入门设计模式之状态模式
阅读量:6859 次
发布时间:2019-06-26

本文共 2296 字,大约阅读时间需要 7 分钟。

版权声明:本文为博主原创文章,未经博主允许不得转载。博客源地址为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对象时获取的回复是不同的,这样就实现了一个简单的状态模式。

 

 

 

本文出自,转载请保留。

 

 

 

学习更多设计模式请参考:

 

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

 

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

 

看一下类图

 

 

  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对象时获取的回复是不同的,这样就实现了一个简单的状态模式。

 

本文出自,转载请保留。

你可能感兴趣的文章
Gradle 基础
查看>>
listview优化(中)
查看>>
当安全遇上AI 阿里聚安全算法挑战赛完美收官
查看>>
怪”博士闵万里:用人工智能,解决吃饭出行问题
查看>>
ES6 + Webpack + React + Babel 如何在低版本浏览器上愉快的玩耍(下)
查看>>
日志服务(原SLS)新功能发布(8)--日志服务Web Tracking功能
查看>>
kvm虚拟化学习笔记(十三)之kvm虚拟机磁盘文件读取小结
查看>>
kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置
查看>>
SlideView 图片滑动(扩展/收缩)展示效果
查看>>
iOS开发之即时通讯之Socket(AsyncSocket)
查看>>
算法设计
查看>>
unsupported major.minor version 解决方法
查看>>
ExtJS之Ext.getDom
查看>>
数据产品设计专题(5)- 分布式数据仓库技术架构
查看>>
为什么选用 React 创建混合型移动应用?
查看>>
自己收集的关于企业数据安全,等级,备份恢复的方案等文档
查看>>
“System.Collections.Generic.IEnumerable<TestDAL.HistoryData>”不包含“ToList”的定义
查看>>
pg 函数sfa_tmp_sleep()执行越来越慢-sql分析
查看>>
关于游戏中的材质系统
查看>>
CentOS安装及配置DHCP服务器
查看>>