Virtual Proxy with lazy instantiation
♥0 |
Line 45 |
Modified 2011-02-16 21:43:17 |
MIT License
archived:2017-03-20 10:43:26
ActionScript3 source code
/**
* Copyright joanllenas ( http://wonderfl.net/user/joanllenas )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/u04a
*/
package
{
import flash.text.TextField;
import flash.display.Sprite;
public class Lazy extends Sprite
{
public function Lazy()
{
var tf:TextField = new TextField();
tf.multiline = true;
tf.width = tf.height = 200;
addChild( tf );
var foo1:IFoo = new FooProxy("Hello");
tf.text = foo1.foovar+"\n";
var foo2:IFoo = new FooProxy("Foo");
tf.appendText( foo2.foovar+"\n" );
tf.appendText( foo1.foovar+" "+foo2.foovar+"\n" );
}
}
}
interface IFoo{
function get foovar():String;
}
class Foo implements IFoo{
private var _foovar:String;
public function Foo( foovar:String ){
_foovar = foovar;
}
public function get foovar():String{
return _foovar;
}
}
class FooProxy implements IFoo{
private var _foo:Foo;
private var _foovar:String;
public function FooProxy( foovar:String ){
_foovar = foovar;
}
//lazy instantiation
private function getFoo():Foo{
return _foo || (_foo = new Foo(_foovar));
}
public function get foovar():String{
return getFoo().foovar;
}
}