类模式实现:

class AudioJackAdapter:
    def __init__(self, audio_jack):
        self.audio_jack = audio_jack

    def play_sound(self):
        if isinstance(self.audio_jack, ThreePointFiveMMJack):
            self.audio_jack.play_sound()
        elif isinstance(self.audio_jack, TwoPointFiveMMJack):
            self.audio_jack.play_sound()
        elif isinstance(self.audio_jack, USBTypeCJack):
            self.audio_jack.play_sound()
        elif isinstance(self.audio_jack, LightningJack):
            self.audio_jack.play_sound()


class ThreePointFiveMMJack:
    def play_sound(self):
        print("Playing sound through 3.5mm audio jack.")


class TwoPointFiveMMJack:
    def play_sound(self):
        print("Playing sound through 2.5mm audio jack.")


class USBTypeCJack:
    def play_sound(self):
        print("Playing sound through USB Type-C audio jack.")


class LightningJack:
    def play_sound(self):
        print("Playing sound through Lightning audio jack.")


# Usage example
three_point_five_mm_jack = ThreePointFiveMMJack()
two_point_five_mm_jack = TwoPointFiveMMJack()
usb_type_c_jack = USBTypeCJack()
lightning_jack = LightningJack()

adapter1 = AudioJackAdapter(three_point_five_mm_jack)
adapter1.play_sound()  # output: Playing sound through 3.5mm audio jack.

adapter2 = AudioJackAdapter(two_point_five_mm_jack)
adapter2.play_sound()  # output: Playing sound through 2.5mm audio jack.

adapter3 = AudioJackAdapter(usb_type_c_jack)
adapter3.play_sound()  # output: Playing sound through USB Type-C audio jack.

adapter4 = AudioJackAdapter(lightning_jack)
adapter4.play_sound()  # output: Playing sound through Lightning audio jack.

对象模式实现:

class AudioJackAdapter:
    def __init__(self):
        self.audio_jack = None

    def set_audio_jack(self, audio_jack):
        self.audio_jack = audio_jack

    def play_sound(self):
        if isinstance(self.audio_jack, ThreePointFiveMMJack):
            self.audio_jack.play_sound()
        elif isinstance(self.audio_jack, TwoPointFiveMMJack):
            self.audio_jack.play_sound()
        elif isinstance(self.audio_jack, USBTypeCJack):
            self.audio_jack.play_sound()
        elif isinstance(self.audio_jack, LightningJack):
            self.audio_jack.play_sound()


class ThreePointFiveMMJack:
    def play_sound(self):
        print("Playing sound through 3.5mm audio jack.")


class TwoPointFiveMMJack:
    def play_sound(self):
        print("Playing sound through 2.5mm audio jack.")


class USBTypeCJack:
    def play_sound(self):
        print("Playing sound through USB Type-C audio jack.")


class LightningJack:
    def play_sound(self):
        print("Playing sound through Lightning audio jack.")


# Usage example
adapter = AudioJackAdapter()

adapter.set_audio_jack(ThreePointFiveMMJack())
adapter.play_sound()  # output: Playing sound through 3.5mm audio jack.

adapter.set_audio_jack(TwoPointFiveMMJack())
adapter.play_sound()  # output: Playing sound through 2.5mm audio jack.

adapter.set_audio_jack(USBTypeCJack())
adapter.play_sound()  # output: Playing sound through USB Type-C audio jack.

adapter.set_audio_jack(LightningJack())
adapter.play_sound()  # output: Playing sound through Lightning audio jack.
``

原文地址: https://www.cveoy.top/t/topic/hjk2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录