2b)機能の実現:ConcreteImplementor

Bridge::ConcreteImplementor では、Bridge::Implementor で規定されたプロトコルに従って、任意のサービスを実現します。

## --------------------             Bridge::ConcreteImplementor
class ItemList(XList, ListImplementor):
    def append(self, item):
        self.view.Items.Add(item)

プロパティー Items に対して、項目 Item を追加 Add します。

    def colorName(self, item):
        return item

引数 item に指定された色の名前 item をリターン値とします。

## --------------------             Bridge::ConcreteImplementor
class GridList(XList, ListImplementor):
    def __init__(self, view, client):
        XList.__init__(self, view, client)
        self.view.ItemsSource = ObservableCollection[object]()

データバインディングを導入するには、各項目ごとに依存性を管理できる ObservableCollection を利用します。すると、各リスト項目は、データソースの情報を反映します。

    def append(self, item):
        self.view.ItemsSource.Add(ColorItem(item))

プロパティー ItemsSource に対して、項目 ColorItem(item) を追加 Add します。

    def colorName(self, item):
        return item.name

引数 item に指定された色情報をもとに、色の名前 item.name をリターン値とします。


Previous|2/3|Next