做了一个项目,项目中一个藏品详情界面针对不同用户,和用户所处于的状态的不同,展示的效果和操作的权限都会不同。想到了状态模式,从来没有用过,赶紧学一下然后用一用。期待兴奋

看了这么多的博客,终于找到一个可以分享的博客啦,这里

1.事必有因

我有一个视图层,在这个视图层上展示的效果和操作行为是一个或多个动态变化的属性来决定的,这些属性被称为状态

保利藏品库房管理软件中藏品信息展示界面

1.人员分类 :仓库管理员、藏品录入业务员
2.操作状态:观看状态、编辑状态

  • 业务员录入藏品状态 —— 可以修改藏品信息,但是不会显示藏品录入时间和业务员信息
  • 业务员观看藏品状态 —— 不能修改藏品信息
  • 业务员编辑藏品状态 —— 可以修改藏品信息,但是不能修改藏品录入时间和业务员信息
  • 管理员观看藏品状态 —— 不能修改藏品信息
  • 管理员编辑藏品状态 —— 不能修改藏品信息,只能修改藏品所在仓库的位置

2.方案分析

状态模式:允许一个对象在自己内部根据状态改变时来改变自己的行为(展示、权限等)。这个对象开起来似乎修改了自己的类。并且这个对象被叫做有状态的对象,这样的对象状态值是实现定义好的一系列值中取出来的。当一个状态值被对象外部的事件产生改变的时候,状态值就会影响对象内部的行为的改变。

3.使用场景上

  • 出现当量if else场景,想上述的那个需求来说,可想而知用ifelse判断多恐怖

    iOS - 在工程中试玩状态模式的更多相关文章

    1. iOS开发-状态模式

      状态模式允许对象内部状态改变时改变它的行为,对象看起来好像修改了它的类.状态模式看起来和策略模式比较相像,策略模式是将可以互换的行为封装起来,然后通过使用委托的方式,决定使用哪一个行为,状态也是封装行 ...

    2. 轻松掌握:JavaScript状态模式

      状态模式 状态模式(State)允许一个对象在其内部状态改变的时候改变它的行为,对象看起来似乎修改了它的类. 状态模式的使用场景也特别明确,有如下两点: 一个对象的行为取决于它的状态,并且它必须在运行 ...

    3. (二十一)状态模式详解(DOTA版)

      作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 本次LZ给各位介绍状态模式, ...

    4. c++ 状态模式(state)

      /************************************************************************/ /* 状态模式 */ /************* ...

    5. Javascript设计模式之我见:状态模式

      大家好!本文介绍状态模式及其在Javascript中的应用. 模式介绍 定义 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式主要解决的是控制一个对象状态的条件表达式 ...

    6. State Pattern -- 状态模式原理及实现(C++)

      主要参考<大话设计模式>和<设计模式:可复用面向对象软件的基础>两本书.本文介绍命令模式的实现. 问题出发点 在实际开发中,我们经常会遇到这种情况:一个对象有多种状态,在每一个 ...

    7. 【转】设计模式 ( 十七) 状态模式State(对象行为型)

      设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理.最直接的解决方案是将这些所有可能发生的情况全都考虑到.然后使用if... ...

    8. 24种设计模式--状态模式【State Pattern】

      现在城市发展很快,百万级人口的城市一堆一堆的,那其中有两个东西的发明在城市的发展中起到非常重要的作用:一个是汽车,一个呢是...,猜猜看,是什么?是电梯!汽车让城市可以横向扩展,电梯让城市可以纵向延伸 ...

    9. IOS的工程目录结构和生命周期

      IOS的工程目录结构和生命周期 ·simple table文件夹:工程相关源代码和配置文件 BIDAppDelegate :    委托的声明和实现 BIDViewController:    视图控 ...

    随机推荐

    1. Windows on Device 项目实践 1 - PWM调光灯制作

      在前一篇文章<Wintel物联网平台-Windows IoT新手入门指南>中,我们讲解了Windows on Device硬件准备和软件开发环境的搭建,以及Hello Blinky项目的演 ...

    2. MySQL 使用XtraBackup的shell脚本介绍

      mysql_backup.sh是关于MySQL的一个使用XtraBackup做备份的shell脚本,实现了简单的完整备份和增量备份.以及邮件发送备份信息等功能.功能目前还比较简单,后续将继续完善和增加 ...

    3. Linux查看设置系统时区

      关于时区的概念,其实初中地理课已经涉及,很多人都多少了解一些,可能只是细节搞不太清楚.为什么会将地球分为不同时区呢?因为地球总是自西向东自转,东边总比西边先看到太阳,东边的时间也总比西边的早.东边时刻 ...

    4. sp_configure错误:不支持对系统目录进行即席更新。

      今天在一台数据库服务器上(Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)     Standard Edition (64-bit))使 ...

    5. C# Attribute学习

      由于项目中需要使用到序列化相关的技术,从而想到是否可以使用C#中的特性,特此花了近两小时学习了一下. 对于特性的学习,主要参考了两篇博文,特此感谢.以下附链接: http://www.cnblogs. ...

    6. IE8 ajax缓存问题

      娘希匹,又遇到缓存问题了. 下面的代码,在其他浏览器都是正常的,但是在IE8中出现诡异问题. $.ajax({ url:dataUrl, data:encodeURI(currentjsonform) ...

    7. map.c 添加注释

      注释仅代表个人理解,难免有错误之处,仅供参考!   1 /*   2  *  linux/drivers/base/map.c   3  *   4  * (C) Copyright Al Viro  ...

    8. linux svn 服务端搭建

      环境是centos6.x. 关于团队对代码管理,相信大部分人习惯于svn.不过我个人比较喜欢git的.这个blog git 常用命令 就是介绍git的基本用法.现部署svn服务端方式如下: 1. 用y ...

    9. poj1006 / hdu1370 Biorhythms (中国剩余定理)

      Biorhythms 题意:读入p,e,i,d 4个整数,已知(n+d)%23=p;   (n+d)%28=e;   (n+d)%33=i ,求n .        (题在文末) 知识点:中国剩余定理 ...

    10. Makefile 编写 tips

      1.变量赋值 VARIABLE = value #在执行时扩展,允许递归扩展 VARIABLE := value #在定义时扩展 VARIABLE ?= value #只有在该变量为空时才设置该值 V ...