doc.dev1x.org

解放/閉鎖原則

1. 原則

クラスは拡張に対して開き、修正に対して閉じていること

2. 根拠

保守性

3. 指針

インターフェイスに対してプログラムを書く

class Program:
    def exec(type):
        if type == '01':
            return 'This is 01'
        elif type == '02':
            return 'This is 02'
        else:
            raise ValueError()
class Program:
    def exec(type):
        if type == '01':
            return 'This is 01'
        elif type == '02':
            return 'This is 02'
        elif type == '03':          # <-- 新たな処理が追加された
            return 'This is 03'     # <-- 新たな処理が追加された
        else:
            raise ValueError()
class Program(metaclass=ABCMeta):
    @classmethod
    def exec():
        pass

class ProgramType01(Program):
    def exec():
        return 'This is 01'

class ProgramType02(Program):
    def exec():
        return 'This is 02'
class Program(metaclass=ABCMeta):
    @classmethod
    def exec():
        pass

class ProgramType01(Program):
    def exec():
        return 'This is 01'

class ProgramType02(Program):
    def exec():
        return 'This is 02'

class ProgramType03(Program):
    def exec():
        return 'This is 03'

4. 注意事項

参考資料

関連