一直对AS的设计模式一头雾水,今天请教了一下经理,他给我讲了一下,明白了许多,下面就给一个例子
package
{
public class TextDian
{
private var a:int;
private var b:int;
private var c:int;
public var showstr:String;
public static var metest:TextDian=new TextDian();//这就是单例模式的用法
public function TextDian()
{
}
public function aF():void
{
showstr="the current function is aF";
}
public function bF(_bs:String):void
{
showstr="the current function is bF"+_bs;
}
}
}
对上面红色的区域,就是这样用法的精妙之处,在之前我如果要用这个类中的方法,或者属性,可能我会选择两种方式,第一种方法:先实例一个这样类,然后把属性定义为PUBLIC,如果我要在多个类中用到这里的方法,
是不是我要在那几个类中分别实例化一个呢,这样是不是太麻烦了,也不利于我去管理,第二种方法,就是把里面想用的的方法和属性定义为静态方法,或者静态属性,这样是能达到目的,但是的封装性太差了,也不好,
但现在我们用了,但是如果像上面这样写的话,我们就可以用TextDian.metest.方法名/属性名,就可以访问我想要的东西,又有封装性,多好
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="397" height="320" name="test">
<fx:Script>
<![CDATA[
private function execute_aF():void
{
TextDian.metest.aF();
showtxt.text=TextDian.metest.showstr
}
private function execute_bF():void
{
TextDian.metest.bF("ni");
showtxt.text=TextDian.metest.showstr;
}
]]>
</fx:Script>
<s:Panel x="10" y="-1" width="369" height="294" title="单例模式运用例子">
<s:TextArea id="showtxt" x="35" y="28" width="298" height="120"/>
<s:Button id="btnA" x="35" y="204" label="执行aF" click="execute_aF()"/>
<s:Button id="btnB" x="261" y="204" label="执行bF" click="execute_bF()"/>
</s:Panel>
</s:WindowedApplication>
效果图:
浙公网安备 33010602011771号