2007-09-19

利用ColdFusion组件实现状态模式

来源: 开发者 作者: 评论 0 条
 
<cffunction name="init" access="public" returntype="ContentItemContext" hint="Constructor.">
<cfargument name="draftState" type="DraftState" required="true" />
<cfargument name="reviewState" type="ReviewState" required="true" />
<cfargument name="approvePublishState" type="ApprovePublishState" required="true" />
<cfargument name="publishedState" type="PublishedState" required="true" />
<cfargument name="initialState" type="string" required="true" />
<cfset variables.instance.draftState = arguments.draftState />
<cfset variables.instance.reviewState = arguments.reviewState />
<cfset variables.instance.approvePublishState = arguments.approvePublishState />
<cfset variables.instance.publishedState = arguments.publishedState />
<cfset createStateNameMappings() />
<cfset setStateByName(arguments.initialState) />
<cfreturn this />
</cffunction>
<cffunction name="save" access="public" returntype="void" output="true" hint="">
<cfset var local = structNew() />
<cfset getCurrentState().save(this) />
</cffunction>
<cffunction name="approve" access="public" returntype="void" output="true" hint="">
<cfset var local = structNew() />
<cfset getCurrentState().approve(this) />
</cffunction>
<cffunction name="reject" access="public" returntype="void" output="true" hint="">
<cfset var local = structNew() />
<cfset getCurrentState().reject(this) />
</cffunction>

<!--- State-related methods --->
<cffunction name="createStateNameMappings" access="private" returntype="void" output="false" hint="">
<cfset var local = structNew() />
<cfset variables.stateMappings['draft'] = variables.instance.draftState />
<cfset variables.stateMappings['review'] = variables.instance.reviewState />
<cfset variables.stateMappings['publishApproval'] = variables.instance.approvePublishState />
<cfset variables.stateMappings['published'] = variables.instance.publishedState />
</cffunction>

<cffunction name="setStateByName" access="public" returntype="void" output="false" hint="">
<cfargument name="stateName" type="string" required="true" />
<cfset setCurrentState(getStateByName(arguments.stateName)) />
</cffunction>

<cffunction name="getStateByName" access="private" returntype="AbstractContentState" output="false" hint="">
共9页: 上一页 [1] [2] [3] [4] 5 [6] [7] [8] [9] 下一页
(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:Python介绍  
下一篇:Java语言中常见的十大误解
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号