Hatena::Groupdann

dann's blog このページをアンテナに追加 RSSフィード

Fork me on GitHub

2008-05-31

Mooseでデザパタ - Proxyパターン

| Mooseでデザパタ - Proxyパターン - dann's blog を含むブックマーク はてなブックマーク - Mooseでデザパタ - Proxyパターン - dann's blog Mooseでデザパタ - Proxyパターン - dann's blog のブックマークコメント

my ( $self, $name ) = @_;
        if ( $self->real ) {
            $self->real->set_printer_name($name);
        }
        $self->name($name);
    }

    sub get_printer_name {
        my $self = shift;
        $self->name;
    }

    sub printstr {
        my ( $self, $string ) = @_;
        $self->realize;
        $self->real->printstr($string);
    }

    sub realize {
        my $self = shift;
        $self->real( Printer->new( name => $self->name ) ) unless ( $self->real );
    }

}

sub main {
    my $p = PrinterProxy->new( name => "Alice" );
    say "名前は現在" . $p->get_printer_name . "です。";
    $p->set_printer_name("Bob");
    say "名前は現在" . $p->get_printer_name . "です。";
    $p->printstr("Hello, world.");
}

main();

See also: