0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MATLAB言語で学ぶ「Java言語で学ぶデザインパターン入門」ノート #2 Adapter

Posted at

概要

Adapter パターンは、異なるインターフェースの差異を解消する、デザインパターンの一つである。

ソースコード

継承を使ったもの

Banner.m
classdef Banner < handle
    properties (Access = private)
        string char {mustBeTextScalar} = ''
    end
    methods (Access = public)
        function obj = Banner(string)
            arguments (Input)
                string char {mustBeTextScalar}
            end
            arguments (Output)
                obj (1,1) Banner
            end
            obj.string = string;
        end
        function showWithParen(obj)
            arguments (Input)
                obj (1,1) Banner
            end
            disp(['(', obj.string, ')']);
        end
        function showWithAster(obj)
            arguments (Input)
                obj (1,1) Banner
            end
            disp(['*', obj.string, '*']);
        end
    end
end
Print.m
classdef (Abstract) Print < handle
    methods (Abstract)
        printWeak(obj)
        printStrong(obj)
    end
end
PrintBanner.m
classdef PrintBanner < Banner & Print
    methods (Access = public)
        function obj = PrintBanner(string)
            arguments (Input)
                string char {mustBeTextScalar}
            end
            arguments (Output)
                obj (1,1) PrintBanner
            end
            obj = obj@Banner(string);
        end
        function printWeak(obj)
            arguments (Input)
                obj (1,1) PrintBanner
            end
            obj.showWithParen();
        end
        function printStrong(obj)
            arguments (Input)
                obj (1,1) PrintBanner
            end
            obj.showWithAster();
        end
    end
end
main.m
function main
p = PrintBanner('Hello');
p.printWeak();
p.printStrong();
end

移譲を使ったもの

Banner.m
classdef PrintBanner < Print
    properties (Access = private)
        banner (1,1) Banner = matlab.lang.invalidHandle('Banner', 1, 1)
    end
    methods (Access = public)
        function obj = PrintBanner(string)
            arguments (Input)
                string char {mustBeTextScalar}
            end
            arguments (Output)
                obj (1,1) PrintBanner
            end
            obj.banner = Banner(string);
        end
        function printWeak(obj)
            arguments (Input)
                obj (1,1) PrintBanner
            end
            obj.banner.showWithParen();
        end
        function printStrong(obj)
            arguments (Input)
                obj (1,1) PrintBanner
            end
            obj.banner.showWithAster();
        end
    end
end

実行結果

>> main
(Hello)
*Hello*
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?