まさるblog

越後在住子持ちプログラマー奮闘記 - Author:まさる(高野 将、TAKANO Sho)

目次

Blog 利用状況

ニュース

著書

2010/7発売


Web掲載記事

@IT

.NET開発を始めるVB6プログラマーが知るべき9のこと

CodeZine

実例で学ぶASP.NET Webフォーム業務アプリケーション開発のポイント

第1回 3層データバインドを正しく活用しよう(前編)

ブログパーツ


書庫

日記カテゴリ

コミュニティ

デザインパターンを学ぶ~その13:ちょっとだけDecoratorパターン(3)~

最後にその8のVB版。

 

VB Code
' 抽象ログクラス
Public MustInherit Class AbstractLog

    ' ログ出力
    Public MustOverride Sub WriteLog(ByVal logMessage As String)

End Class

' 標準出力ログクラス
Public Class StandardOutputLog
    Inherits AbstractLog

    ' ログ出力
    Public Overrides Sub WriteLog(ByVal logMessage As String)

        Console.WriteLine(logMessage)

    End Sub

End Class

' デバッグ出力ログクラス
Public Class DebugOutputLog
    Inherits AbstractLog

    ' 抽象ログ出力クラス変数
    Private _abstractLog As AbstractLog

    ' コンストラクタ
    Public Sub New(ByVal abstractLog As AbstractLog)

        Me._abstractLog = abstractLog

    End Sub

    ' ログ出力
    Public Overrides Sub WriteLog(ByVal logMessage As String)

        Me._abstractLog.WriteLog(logMessage)

        ' デバッグ出力にログ出力
        Debug.WriteLine(logMessage)

    End Sub

End Class

' イベントログ出力ログクラス
Public Class EventOutputLog
    Inherits AbstractLog

    ' 抽象ログ出力クラス変数
    Private _abstractLog As AbstractLog

    ' コンストラクタ
    Public Sub New(ByVal abstractLog As AbstractLog)

        Me._abstractLog = abstractLog

    End Sub

    ' ログ出力
    Public Overrides Sub WriteLog(ByVal logMessage As String)

        Me._abstractLog.WriteLog(logMessage)

        ' イベントログにログ出力
        ' ※イベントソースが無い場合は作成する
        If Not EventLog.SourceExists("Masaru") Then
            EventLog.CreateEventSource("Masaru", "TestLog")
        End If
        Dim eLog As New EventLog()
        eLog.Source = "Masaru"
        eLog.WriteEntry(logMessage)

    End Sub

End Class

' 実行コード
Public Shared Sub Main(ByVal args As String())

    Dim stdOutLog As New StandardOutputLog()

    stdOutLog.WriteLog("まさる")

    Dim dbgOutLog As New DebugOutputLog(stdOutLog)

    dbgOutLog.WriteLog("@わんくま同盟")

    Dim evtOutLog As New EventOutputLog(dbgOutLog)

    evtOutLog.WriteLog("@雪国っす")

    Console.ReadLine()

End Sub

実行結果

  • 標準出力
    pipeDecoratorVB_SO
  • デバッグ出力
     pipeDecoratorVB_DO
  • イベントログ
    pipeDecoratorVB_EO

 

これでひとまずC#=>VBの変換は終わりです。

今後はC#、VBのコードを同時に掲載しつつ、このシリーズをやっていこうと思います。

投稿日時 : 2007年8月17日 14:31

Feedback

No comments posted yet.
タイトル
名前
Url
コメント