模式动机在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的 (stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。在UML中可以使用状态...
分类:
其他好文 时间:
2015-01-04 11:58:39
阅读次数:
210
状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。 好处:将与特定状态相关的行为局部化,并且将不同状态的行为分...
分类:
其他好文 时间:
2014-12-30 11:25:37
阅读次数:
121
在实现反序列化的时候,上个DEMO直接将SQLconnection对象的创建写在了product的构造函数中,而在序列化时,再通过实现IDeserializationCallback接口重新创建SqlConnection对象,以此来还原对象状态。在Product构造函数和OnDeserialization()方法中,都硬编码了数据库连接字符串。
而更常见的情况时...
分类:
其他好文 时间:
2014-12-28 22:20:22
阅读次数:
245
如果是C++,我们可以计算对象内成员的位置,然后偏移指针以访问类型的所有非公开成员。但是.NET对象完全受GC管理,地址根本无法得到,并且也无法通过指针调用方法。当然... 这是一种很不值得推荐的技巧,访问非公有成员很可能破坏对象状态,造成不可预料的后果。但是无论如何,利用.NET的反射机制可以轻松...
分类:
Web程序 时间:
2014-12-22 15:57:55
阅读次数:
129
发现操作的策略与启发
(1)考虑系统责任
要逐项审查用户需求提出的每一项功能要求,看他应由哪些对象来提供,从而在该对象中设立相应的操作
(2)考虑问题域
对象在问题域中对应的事物有哪些行为?
(3)分析对象状态
对象状态的转换,是由哪些操作引起的?
(4)追踪操作的执行路线
模拟操作的执行,并在整个系统中追踪...
分类:
其他好文 时间:
2014-12-17 14:37:47
阅读次数:
165
Google Protocal Buffer 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化或者说序列化。它很适合做数据存储或RPC数据交换格式。串行化(序列化):将对象存储到解释中式以二进制方式通过网络传输。之后可以通过反串行化从这些联系的字节数据重新构建一个与袁术对象状态相同的对像...
分类:
其他好文 时间:
2014-12-15 17:08:01
阅读次数:
188
Java序列化与反序列化(实践)基本概念:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。昨天在一本书上看到了,好好实践了一下,序列化为一般文件,也序列化为XML文件(使用XStream)。用于序列化的实体类...
分类:
编程语言 时间:
2014-12-14 18:26:07
阅读次数:
213
简介多个观察者共同监视一个对象,当该对象状态发生变化时会通知所有观察者,观察者随即做出改变。使用场景典型的使用场景是 Spring 的事件驱动模型,事件监听者实现ApplicationListener 接口,事件发布者实现AbstractApplicationEventMulticaster 接口。...
分类:
其他好文 时间:
2014-12-05 19:09:46
阅读次数:
166
Hibernate对象状态瞬时(transient):由new操作符创建,且尚未Hibernate Session关联。瞬时对象不会被持久化到数据库,也不会被赋予持久化标识。持久(persistent):持久化的实例在数据库中有对应的记录,并拥有一个持久化标识。持久化的实例可能是刚被保存,或刚被加载...
分类:
Web程序 时间:
2014-11-23 13:01:39
阅读次数:
302
一、UML图
二、概述
下面是来自书本和网络的对状态模式的定义和分析:
(1)状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。看起来,状态模式好像是神通广大很厉害似的——居然能够“修改自身的类”!
(2)适用场景:a)状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复...
分类:
编程语言 时间:
2014-11-18 10:19:38
阅读次数:
224