公有方法和私有方法

内部工作流有一个统一的外部调用方法

这个就是在面向对象设计中非常经典,对应的设计模式叫“门面模式(Facade Pattern)”

“汽车一键启动”来解释最合适:

  • 内部工作流:自检、通电、油泵建压、火花塞点火……这一大堆复杂的私有方法。

  • 统一的外部调用方法:就是你按下的那个“Start”按钮(公有方法)。

1. 场景设定:汽车的“一键启动”系统

在这个例子里,车主不需要知道车是怎么发动的,只需要按一个键。

 

概念

汽车对应物

代码特征

作用

私有方法

油泵建压、ECU自检

def __check_oil(self):

内部细节,车主看不见。

统一外部调用

一键启动按钮

def start_car(self):

唯一的入口,按一下全搞定。

2. 代码实现:一个按钮管所有

class Car:
    def __init__(self):
        self.__is_running = False

    # 1. 内部私有方法:模拟复杂的启动流程
    def __power_on_system(self):
        print("⚙️ [Step 1] 车载电脑通电,仪表盘亮起...")

    def __check_safety(self):
        print("⚙️ [Step 2] 检测安全带、刹车、档位...")

    def __fuel_pump(self):
        print("⚙️ [Step 3] 油泵开始建压,供油...")

    def __ignite_engine(self):
        print("⚙️ [Step 4] 火花塞点火,轰轰轰...")
        self.__is_running = True

    # 2. 统一的外部调用方法(门面/Facade)
    def start_car(self):
        """车主唯一需要碰的按钮"""
        print("🚗 按下 Start 按钮...")
        
        # 内部工作流按顺序执行
        self.__power_on_system()
        self.__check_safety()
        self.__fuel_pump()
        self.__ignite_engine()
        
        print("✅ 车辆已启动,请挂挡行驶!")

# --- 场景演示 ---
my_car = Car()

# ✅ 正确操作:只调用一个方法
my_car.start_car()

print("\n" + "-"*20 + "\n")

# ❌ 错误操作:试图跳过按钮,直接手动去点火
# my_car.__ignite_engine()  # AttributeError: 车主没有权限直接控制点火系统

这个需求在面向对象设计中非常经典,对应的设计模式叫“门面模式(Facade Pattern)”

“汽车一键启动”来解释最合适:

  • 内部工作流:自检、通电、油泵建压、火花塞点火……这一大堆复杂的私有方法。

  • 统一的外部调用方法:就是你按下的那个“Start”按钮(公有方法)。


1. 场景设定:汽车的“一键启动”系统

在这个例子里,车主不需要知道车是怎么发动的,只需要按一个键。

 

概念

汽车对应物

代码特征

作用

私有方法

油泵建压、ECU自检

def __check_oil(self):

内部细节,车主看不见。

统一外部调用

一键启动按钮

def start_car(self):

唯一的入口,按一下全搞定。


2. 代码实现:一个按钮管所有

python
 
class Car:
    def __init__(self):
        self.__is_running = False

    # 1. 内部私有方法:模拟复杂的启动流程
    def __power_on_system(self):
        print("⚙️ [Step 1] 车载电脑通电,仪表盘亮起...")

    def __check_safety(self):
        print("⚙️ [Step 2] 检测安全带、刹车、档位...")

    def __fuel_pump(self):
        print("⚙️ [Step 3] 油泵开始建压,供油...")

    def __ignite_engine(self):
        print("⚙️ [Step 4] 火花塞点火,轰轰轰...")
        self.__is_running = True

    # 2. 统一的外部调用方法(门面/Facade)
    def start_car(self):
        """车主唯一需要碰的按钮"""
        print("🚗 按下 Start 按钮...")
        
        # 内部工作流按顺序执行
        self.__power_on_system()
        self.__check_safety()
        self.__fuel_pump()
        self.__ignite_engine()
        
        print("✅ 车辆已启动,请挂挡行驶!")

# --- 场景演示 ---
my_car = Car()

# ✅ 正确操作:只调用一个方法
my_car.start_car()

print("\n" + "-"*20 + "\n")

# ❌ 错误操作:试图跳过按钮,直接手动去点火
# my_car.__ignite_engine()  # AttributeError: 车主没有权限直接控制点火系统

3. 为什么这样设计?(核心优势)

① 极简的用户体验(低耦合)

车主不需要懂机械原理。如果明天汽车技术升级,把“火花塞点火”换成了“电机驱动”,车主依然只需要按那个 start_car按钮,完全无感。

② 保护内部流程(高内聚)

你不能直接调用 __ignite_engine。如果不经过 __check_safety(安全检查)就直接点火,车是会炸的。通过 start_car这个统一的入口,保证了流程的完整性

③ 代码整洁

外部调用者不需要写一堆代码:

 

4. 总结对照

 

角色

行为

代码体现

车主 (外部)

按启动键

car.start_car()

启动键 (公有方法)

统筹调度

def start_car(self):

引擎/油泵 (私有方法)

埋头干活

def __ignite_engine(self):

一句话总结:

把复杂的“内部工作流”打包成一个“黑盒”,对外只露出一个“大按钮”(公有方法)。​ 这样既能保证内部逻辑不乱,又能让外部用得爽快!

posted @ 2026-05-26 20:57  szmtjs10  阅读(8)  评论(0)    收藏  举报