封装状态

本文介绍了一个使用JavaScript实现的状态模式示例。通过按钮点击切换不同状态,展示了如何将行为与对象的状态进行解耦,使得状态的变化更加灵活且易于管理。

遇到变化点封装它!

 1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2<html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4  <title> change state </title>
 5  <meta name="generator" content="editplus" />
 6  <meta name="author" content="" />
 7  <meta name="keywords" content="" />
 8  <meta name="description" content="" />
 9 </head>
10
11 <body>
12  <input type="button" id="execBtn" value="show1" />
13  <div id="show"></div>
14ExpandedBlockStart.gifContractedBlock.gif  <script type="text/javascript">
15ExpandedSubBlockStart.gifContractedSubBlock.gif    function Control(state){
16        this.State = state;
17ExpandedSubBlockStart.gifContractedSubBlock.gif        this.Execute = function(){
18            this.State.Execute(this);
19        }

20    }

21
22ExpandedSubBlockStart.gifContractedSubBlock.gif    function State(){
23        this.Title = "title1";
24ExpandedSubBlockStart.gifContractedSubBlock.gif        this.Execute = function(control){
25            show.innerHTML = this.Title;
26            execBtn.value = "show2";
27            control.State = new State2();
28        }

29    }

30    
31ExpandedSubBlockStart.gifContractedSubBlock.gif    function State2(){
32        this.Title = "title2";
33ExpandedSubBlockStart.gifContractedSubBlock.gif        this.Execute = function(control){
34            show.innerHTML = this.Title;
35            execBtn.value = "show1";
36            control.State = new State();
37        }

38    }

39    
40    var control;
41
42ExpandedSubBlockStart.gifContractedSubBlock.gif    window.onload = function(){
43        control = new Control(new State());
44        control.Execute();
45    }

46    
47ExpandedSubBlockStart.gifContractedSubBlock.gif    execBtn.onclick = function(){
48        control.Execute();
49    }

50
51    
52  
</script>
53 </body>
54</html>
55

转载于:https://www.cnblogs.com/byxxw/archive/2009/02/11/1388271.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值