Python-编程思想| “朝闻道”知识分享大赛

小年华°Moon 2024-10-31 11:55:16

这是我参加朝闻道知识分享大赛的第29篇文章。

img

开闭规则:运行增加新功能,不修改客户端代码

重写的快捷键:ctrl + o

# 老张开车去东北
#  增加新功能:开飞机/划船/骑自行车...
# -------------改进前的思想------------------
class Person:
    def __init__(self, name=""):
        self.name = name

    def go_to(self, position, vehicle):
        print(self.name, "去", position)
        if type(vehicle) == Car:
            vehicle.run()
        elif  type(vehicle) == Airplane:
            vehicle.fly()

class Car:
    def run(self):
        print("汽车嘟嘟嘟...在行驶")

class Airplane:
    def fly(self):
        print("飞机嗖嗖嗖...在飞行")

zl = Person("老张")
car = Car()
air = Airplane()
zl.go_to("东北", car)
zl.go_to("东北", air)

# -------------架构师------------------
class Person:
    def __init__(self, name=""):
        self.name = name

    def go_to(self, position, vehicle):
        # 传入的对象 是一种 交通工具
        if isinstance(vehicle, Vehicle):
            # "我要调用变化点"
            # 编码时:调用的是父(Vehicle)
            # 运行时:执行的是子(Car或者Airplane)
            vehicle.transport()

class Vehicle:
    def transport(self):
        pass

# -------------程序员------------------

class Car(Vehicle):
    # 重写:子类具有和父类相同的方法
    def transport(self):
        print("汽车嘟嘟嘟...在行驶")


class Airplane(Vehicle):
    # 重写的快捷键:ctrl + o
    def transport(self):
        print("飞机嗖嗖嗖...在飞行")


# -------------测试------------------
lz = Person("老张")
car = Car()
lz.go_to("东北", car)
lz.go_to("东北", Airplane())
lz.go_to("东北", "轮船")
...全文
19 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,040

社区成员

发帖
与我相关
我的任务
社区描述
中南民族大学CSDN高校俱乐部聚焦校内IT技术爱好者,通过构建系统化的内容和运营体系,旨在将中南民族大学CSDN社区变成校内最大的技术交流沟通平台。
经验分享 高校 湖北省·武汉市
社区管理员
  • c_university_1575
  • WhiteGlint666
  • wzh_scuec
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎各位加入中南民族大学&&CSDN高校俱乐部社区(官方QQ群:908527260),成为CSDN高校俱乐部的成员具体步骤(必填),填写如下表单,表单链接如下:
人才储备数据库及线上礼品发放表单邀请人吴钟昊:https://ddz.red/CSDN
CSDN高校俱乐部是给大家提供技术分享交流的平台,会不定期的给大家分享CSDN方面的相关比赛以及活动或实习报名链接,希望大家一起努力加油!共同建设中南民族大学良好的技术知识分享社区。

注意:

1.社区成员不得在社区发布违反社会主义核心价值观的言论。

2.社区成员不得在社区内谈及政治敏感话题。

3.该社区为知识分享的平台,可以相互探讨、交流学习经验,尽量不在社区谈论其他无关话题。

试试用AI创作助手写篇文章吧