【Python学习随笔】依赖倒置原则 + 简单工厂模式
记录一下Python学习中的点滴,分享一段代码。
【问题背景】在不同的系统平台需要执行一段有差异的指令,该如何写出更优雅的代码?
【知识点】依赖倒置原则 + 简单工厂模式
【代码分享】
#!/usr/bin/env python
# coding:utf-8"""
依赖倒置原则 + 简单工厂模式@Date: 2023/4/5 16:44
@Author: zhangbc
@Version: 1.0.0
@Contact: zhangbocheng189@163.com
@Description:
"""
import os
from abc import ABCMeta, abstractmethodclass IOperator(metaclass=ABCMeta):"""系统操作接口"""@abstractmethoddef operate(self, system):passclass System(metaclass=ABCMeta):"""系统抽象类"""def __init__(self, name):self.name = name@abstractmethoddef run(self):passclass SystemFactory:def __init__(self, name):self.name = namedef create(self):return {'posix': PosixSystem(self.name),'nt': WindowsSystem(self.name),'default': UnixSystem(self.name)}.get(self.name, 'default')class UnixSystem(System):def run(self):print('This is Unix System,', self.name)class WindowsSystem(System):def run(self):print('This is Windows System,', self.name)class PosixSystem(System):def run(self):print('This is MacOS System,', self.name)class Operator(IOperator):def operate(self, system):print(f'The is driver of {system.name}')system.run()if __name__ == '__main__':print('========依赖倒置原则============')unix = UnixSystem('Unix')wind = WindowsSystem('Windows')macOS = PosixSystem('MacOS')ds = Operator()ds.operate(unix)ds.operate(wind)ds.operate(macOS)print('\n\n========简单工厂设计模式===========')_os = SystemFactory(os.name).create()ds.operate(_os)
【Python学习随笔】依赖倒置原则 + 简单工厂模式相关推荐
- [Python设计模式] 第1章 计算器——简单工厂模式
github地址:https://github.com/cheesezh/python_design_patterns 写在前面的话 """ 读书的时候上过<设计模 ...
- 设计模式 学习笔记(1)简单工厂模式、策略模式
1.简单工厂模式 用一个单独的类来做创造实例的过程. public class OperationFactory{ public static Operation createOperate(stri ...
- 设计模式----2(简单工厂模式的概念,简单工厂模式的实现,简单工厂模式的优缺点)
简单工厂模式 简单工厂模式的概念 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负 责创建其他类的实例,被创建的实例通常都具有共同的父类. 具体分类 工厂(Creator ...
- 从王者荣耀看设计模式(四.简单工厂模式)
从王者荣耀看设计模式(简单工厂模式) 一.简介 游戏开始前,玩家可从英雄池自由挑选将要出战的英雄 二.简单工厂模式 简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫 ...
- 工厂模式-依赖倒置原则
老板:阿飞啊,我们公司最近接了个项目,你看着设计一下,我给你说下需求. 项目组长阿飞:好啊,什么需求? 老板:我们找了一个合作的商铺,他们要设计一套面包销售系统.主要功能,根据用户选择的面包种类来下订 ...
- 胖虎白话学习设计模式之依赖倒置原则(Dependence Inversion Principle)
胖虎白话学习设计模式之依赖倒置原则(Dependence Inversion Principle) 记录胖虎学习设计模式过程,不许勿喷,转载请注明出处! (此博文为胖虎在PDF上截取.觉得写得通俗易懂 ...
- 五大软件设计原则学习笔记5——依赖倒置原则
五大软件设计原则SOLID: 单一职责原则(Single responsibility principle,SRP)开放封闭原则(Open–closed principle,OCP)Liskov 替换 ...
- java设计模式之设计原则②依赖倒置原则
定义: ⑴高层模块不应该依赖低层模块,二者都应该依赖其抽象 ⑵抽象不应该依赖细节,细节应该依赖抽象 ⑶针对接口编程,不要针对实现编程 我们通过抽象包括使用接口或者抽象类可以使各个类或模块的实现彼此独立 ...
- 简单工厂模式(Java、Python)、工厂方法模式(Java、Python)
目录 一.试画出简单工厂模式的模式结构图,并对模式进行分析 1.1 简单工厂模式结构图: 1.2 简单工厂模式的实现(Java) 1.3 简单工厂模式的优缺点 1.4 简单工厂模式实现(Python) ...
最新文章
- 2021CCF BDCI 大数据与计算智能大赛参赛指南
- 太棒了!Jupyter 与 PyCharm 完美融合,Jupytext 来啦!
- 求n!(n的阶乘)和1!+2!+....n! (阶乘求和) ----C语言实现
- 洛谷【P2257】YY的GCD
- vs code 添加jquery的智能提示
- 精益或六西格玛已经不易了,为啥还需要“精益六西格玛”?
- Linux基础命令---mpstat显示CPU使用情况
- linux重启网卡提示tent,linux
- 同步现象 心理学_男生是不是更容易从失恋中走出来?心理学:失恋后悲伤,男女不同...
- vue实现单页面多标签页
- 阶段3 1.Mybatis_11.Mybatis的缓存_7 触发清空一级缓存的情况
- A*算法、导航网格、路径点寻路对比(A-Star VS NavMesh VS WayPoint)
- HashMap,LinkedHashMap,TreeMap应用
- Git Windows下配置Merge工具DiffMerge
- altera Cyclone V再认识
- android自动亮度流程,Android 亮度自动调节是如何实现的?
- 泰拉瑞亚 服务器linux,泰拉瑞亚Linux主机打造指南
- 使用GCC和Makefile编译c文件
- 03 限制 limit
- 使用ESP8266与小爱同学通过Arduino控制舵机