设计一个台灯类,其中台灯有灯泡类(bubble)这个属性还有开关on这个方法,设计一个灯泡类bubble
灯泡类有发光的方法
其中有红灯泡类red bubble和绿灯泡类green bubble
他们都继承灯泡类bubble一个发亮的方法,
请设计出一段代码,可以使台灯开启灯泡发亮,
并且保证替换不同种类的灯泡,台灯类代码不被修改。
class Bubble:
def glow(self):
print("灯泡发光")
class RedBubble(Bubble):
def glow(self):
print("红灯泡发光")
class GreenBubble(Bubble):
def glow(self):
print("绿灯泡发光")
class DeskLamp:
def __init__(self, bubble):
self.bubble = bubble
def on(self):
self.bubble.glow()
red = RedBubble()
lamp = DeskLamp(red)
lamp.on()
green = GreenBubble()
lamp = DeskLamp(green)
lamp.on()
引用 皆我百晓生 小程序回复内容作答:
以下是使用 Python 实现的代码示例:
class Bubble:
def illuminate(self):
print("灯泡发亮了!")
class RedBubble(Bubble):
pass
class GreenBubble(Bubble):
pass
class DeskLamp:
def __init__(self, bubble):
self.bubble = bubble
def switch_on(self):
self.bubble.illuminate()
red_bubble = RedBubble()
lamp = DeskLamp(red_bubble)
lamp.switch_on() # 开启台灯,红灯泡发亮
green_bubble = GreenBubble()
lamp = DeskLamp(green_bubble)
lamp.switch_on() # 开启台灯,绿灯泡发亮
这段代码定义了一个台灯类 DeskLamp
和灯泡类 Bubble
,以及红灯泡类 RedBubble
和绿灯泡类 GreenBubble
。
在 DeskLamp
类中,通过初始化方法接收一个灯泡对象并保存为属性 self.bubble
。然后,switch_on
方法会调用灯泡对象的 illuminate
方法,使灯泡发光。
通过传入不同种类的灯泡对象,即可实现替换不同种类的灯泡,而无需修改台灯类的代码。例如,上述示例中先使用红灯泡对象创建台灯对象,并调用 switch_on
方法使红灯泡发光,然后再用绿灯泡对象创建台灯对象,并调用 switch_on
方法使绿灯泡发光。
【以下回答由 GPT 生成】
首先,我们可以创建一个Light
(台灯)类,其中包含一个灯泡属性bubble
和一个开关方法on
。在台灯类的初始化方法中,我们可以将灯泡对象作为参数传入,并赋值给bubble
属性。
接下来,我们可以创建一个Bubble
(灯泡)类,其中包含一个发光的方法light_up
。这个方法可以打印出灯泡发光的效果。
然后,我们创建两个子类RedBubble
(红灯泡)和GreenBubble
(绿灯泡),它们分别继承自Bubble
类,并添加一个自己特有的发亮的方法light_up
。
最后,我们在主函数中实例化一个台灯对象,并调用开关方法和灯泡发光的方法,可以实现开启灯泡并发光的效果。
下面是代码实现:
class Light:
def __init__(self, bubble):
self.bubble = bubble
def on(self):
self.bubble.light_up()
class Bubble:
def light_up(self):
raise NotImplementedError("light_up method must be implemented")
class RedBubble(Bubble):
def light_up(self):
print("Red bubble is lighting up!")
class GreenBubble(Bubble):
def light_up(self):
print("Green bubble is lighting up!")
def main():
red_bubble = RedBubble()
light = Light(red_bubble)
light.on() # 输出:Red bubble is lighting up!
green_bubble = GreenBubble()
light.bubble = green_bubble
light.on() # 输出:Green bubble is lighting up!
if __name__ == '__main__':
main()
通过以上代码,我们可以实现台灯类,并保证在替换不同种类的灯泡时不需要修改台灯类的代码。