首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >提升软件系统可维护性与灵活性:软件架构设计七大原则的实践探讨

提升软件系统可维护性与灵活性:软件架构设计七大原则的实践探讨

原创
作者头像
一键难忘
发布于 2024-12-04 14:50:23
发布于 2024-12-04 14:50:23
30600
代码可运行
举报
文章被收录于专栏:技术汇总专栏技术汇总专栏
运行总次数:0
代码可运行

文章开始之前,推荐一些别人写的很好的文章!感兴趣的也可以去读一下哦!

今日推荐:金仓数据库数据迁移实战:从MySQL到KES的顺利迁移

文章链接:https://cloud.tencent.com/developer/article/2473693

努力的小雨的这篇文章的优点在于其内容详细且实用,清晰地介绍了从MySQL数据库迁移到金仓数据库KES的整个过程。文章不仅包括了从安装到配置的数据源设置,还提供了具体的操作步骤和注意事项,帮助读者避免常见的错误。通过真实的案例展示,作者分享了在迁移过程中遇到的小问题(如路径问题),并提供了解决方案,增强了文章的实操性。此外,文章语言简洁明了,适合开发者和数据库管理员参考,使技术操作更容易理解并快速应用。

软件架构设计是软件开发的基石。随着技术的不断演进,我们需要回头审视经典的 七大原则,以确保我们的设计经得起时间和需求的考验。本文从实际开发经验出发,对七大原则进行重新理解,并结合代码实例解析其在现代软件开发中的具体应用。


什么是软件架构设计的七大原则?

软件架构设计的七大原则是:

  1. 单一职责原则 (SRP)
  2. 开放封闭原则 (OCP)
  3. 里氏替换原则 (LSP)
  4. 依赖倒置原则 (DIP)
  5. 接口隔离原则 (ISP)
  6. 合成复用原则 (CRP)
  7. 迪米特法则 (LoD)

这些原则看似独立,却相辅相成,为设计高内聚、低耦合的软件系统提供了指引。以下我们将深入分析其中的 单一职责原则依赖倒置原则,并用代码实例展示如何应用它们。


单一职责原则:职责清晰,代码简洁

定义:一个类只应负责一项职责,避免因多个职责的变更而互相影响。

在复杂系统中,如果一个类承担了过多职责,维护和扩展的难度会随着时间成倍增加。

image-20241204224620791
image-20241204224620791

案例:改进用户管理系统

问题代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
class UserManager:
    def __init__(self, db_connection):
        self.db_connection = db_connection

    def add_user(self, user_data):
        self.db_connection.save(user_data)

    def send_welcome_email(self, user_email):
        print(f"Sending welcome email to {user_email}")

    def generate_user_report(self):
        # 生成用户报告
        print("Generating user report...")

问题

  • UserManager 同时负责用户数据的保存、邮件发送和报告生成,职责过多。
  • 如果邮件功能需求变更,可能会影响其他职责。

改进代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
class UserManager:
    def __init__(self, db_connection):
        self.db_connection = db_connection

    def add_user(self, user_data):
        self.db_connection.save(user_data)


class EmailService:
    @staticmethod
    def send_welcome_email(user_email):
        print(f"Sending welcome email to {user_email}")


class ReportService:
    @staticmethod
    def generate_user_report():
        print("Generating user report...")

好处

  • 每个类关注点单一,UserManager 专注于用户数据操作,EmailService 负责邮件发送,ReportService 处理报告生成。
  • 更易于维护和扩展。

依赖倒置原则:面向接口编程,依赖抽象

定义:高层模块不应该依赖于低层模块,二者都应该依赖于抽象;抽象不应该依赖于具体实现,具体实现应该依赖于抽象。

案例:灵活的支付模块

问题代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
class PaymentProcessor:
    def process_payment(self, payment_type, amount):
        if payment_type == "credit_card":
            self._process_credit_card_payment(amount)
        elif payment_type == "paypal":
            self._process_paypal_payment(amount)

    def _process_credit_card_payment(self, amount):
        print(f"Processing credit card payment of ${amount}")

    def _process_paypal_payment(self, amount):
        print(f"Processing PayPal payment of ${amount}")

问题

  • PaymentProcessor 直接依赖具体支付方式,扩展新的支付方式需要修改核心代码,违反了开放封闭原则。

改进代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from abc import ABC, abstractmethod

# 抽象支付接口
class PaymentStrategy(ABC):
    @abstractmethod
    def pay(self, amount):
        pass

# 具体支付实现
class CreditCardPayment(PaymentStrategy):
    def pay(self, amount):
        print(f"Processing credit card payment of ${amount}")


class PayPalPayment(PaymentStrategy):
    def pay(self, amount):
        print(f"Processing PayPal payment of ${amount}")

# 高层模块
class PaymentProcessor:
    def __init__(self, payment_strategy: PaymentStrategy):
        self.payment_strategy = payment_strategy

    def process_payment(self, amount):
        self.payment_strategy.pay(amount)

# 使用示例
if __name__ == "__main__":
    credit_card_payment = CreditCardPayment()
    paypal_payment = PayPalPayment()

    processor = PaymentProcessor(credit_card_payment)
    processor.process_payment(100)  # 处理信用卡支付

    processor = PaymentProcessor(paypal_payment)
    processor.process_payment(200)  # 处理 PayPal 支付

好处

  • 高层模块 PaymentProcessor 依赖于抽象 PaymentStrategy,而非具体实现。
  • 新增支付方式时无需修改 PaymentProcessor,遵循开放封闭原则。

深化理解:七大原则的协同效应

相辅相成的设计原则

  • 单一职责接口隔离 强调模块内部职责的明确性;
  • 依赖倒置合成复用 鼓励模块间松耦合;
  • 开放封闭里氏替换 提供了扩展性设计的基础;
  • 迪米特法则 则通过减少模块交互复杂度实现系统整体的高内聚低耦合。
image-20241204224635381
image-20241204224635381


里氏替换原则:保障继承的行为一致性

定义:子类必须能够替代父类,而不影响程序的正确性。

这一原则要求我们在设计继承时,确保子类不会破坏父类的行为逻辑。这不仅是面向对象编程的重要特性,也是维护代码稳定性和可扩展性的关键。

案例:几何形状的周长计算

问题代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def get_area(self):
        return self.width * self.height


class Square(Rectangle):
    def __init__(self, side):
        super().__init__(side, side)

问题

虽然 Square 继承了 Rectangle,但它强制将 widthheight 绑定为相同的值。如果 Rectangle 的方法发生变动(如引入动态修改宽高的逻辑),Square 会导致不一致的行为。

改进代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from abc import ABC, abstractmethod

# 基础形状抽象
class Shape(ABC):
    @abstractmethod
    def get_area(self):
        pass


class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def get_area(self):
        return self.width * self.height


class Square(Shape):
    def __init__(self, side):
        self.side = side

    def get_area(self):
        return self.side * self.side

改进后

  • RectangleSquare 独立实现自己的逻辑,不再依赖父类的具体行为。
  • 如果增加新的形状,遵循统一的 Shape 接口即可,不会破坏已有实现。
image-20241204224700631
image-20241204224700631

开放封闭原则:对扩展开放,对修改关闭

定义:软件实体(类、模块、函数)应该允许在不修改其源代码的情况下,通过扩展来增加功能。

案例:日志记录系统

问题代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
class Logger:
    def log(self, message, log_type):
        if log_type == "console":
            print(message)
        elif log_type == "file":
            with open("log.txt", "a") as file:
                file.write(message + "\n")

问题

  • 增加新的日志类型(如数据库日志)需要修改 Logger 类的代码,违背了开放封闭原则。

改进代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from abc import ABC, abstractmethod

# 抽象日志记录器
class LogHandler(ABC):
    @abstractmethod
    def handle_log(self, message):
        pass


# 具体日志实现
class ConsoleLogHandler(LogHandler):
    def handle_log(self, message):
        print(message)


class FileLogHandler(LogHandler):
    def handle_log(self, message):
        with open("log.txt", "a") as file:
            file.write(message + "\n")


# 高层模块
class Logger:
    def __init__(self, log_handler: LogHandler):
        self.log_handler = log_handler

    def log(self, message):
        self.log_handler.handle_log(message)


# 使用示例
if __name__ == "__main__":
    console_logger = Logger(ConsoleLogHandler())
    console_logger.log("This is a console log")

    file_logger = Logger(FileLogHandler())
    file_logger.log("This is a file log")

改进后

  • 增加新的日志类型(如 DatabaseLogHandler)时,只需实现 LogHandler 接口,不需要修改 Logger 类。

接口隔离原则:避免臃肿的接口

定义:客户端不应该被迫依赖它不需要的接口。

这一原则强调接口的精简性,确保每个接口只包含与特定客户端相关的功能。

案例:改进支付接口

问题代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
class PaymentGateway:
    def process_credit_card_payment(self, amount):
        pass

    def process_paypal_payment(self, amount):
        pass

    def process_apple_pay_payment(self, amount):
        pass

问题

  • 所有支付方式都被强制实现,即使某些网关不支持某种支付方式。

改进代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from abc import ABC, abstractmethod

class CreditCardPaymentGateway(ABC):
    @abstractmethod
    def process_credit_card_payment(self, amount):
        pass


class PayPalPaymentGateway(ABC):
    @abstractmethod
    def process_paypal_payment(self, amount):
        pass


# 实现特定网关
class StripePaymentGateway(CreditCardPaymentGateway):
    def process_credit_card_payment(self, amount):
        print(f"Stripe processing credit card payment: ${amount}")


class PayPalProcessor(PayPalPaymentGateway):
    def process_paypal_payment(self, amount):
        print(f"PayPal processing payment: ${amount}")


# 使用示例
if __name__ == "__main__":
    stripe = StripePaymentGateway()
    stripe.process_credit_card_payment(50)

    paypal = PayPalProcessor()
    paypal.process_paypal_payment(100)

改进后

  • 各支付方式的实现只需要关注自己支持的功能,避免了实现冗余的接口方法。

合成复用原则:优先使用组合,而非继承

定义:通过组合来复用代码,而不是通过继承以减少耦合。

继承在一定程度上会导致子类对父类的强依赖,而组合提供了更灵活的复用方式。

image-20241204224719830
image-20241204224719830

案例:任务调度器

问题代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
class Scheduler:
    def run(self):
        print("Running task...")

改进代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
class Task:
    def execute(self):
        print("Executing task...")


class Scheduler:
    def __init__(self, task: Task):
        self.task = task

    def run(self):
        print("Running scheduler...")
        self.task.execute()


# 使用示例
if __name__ == "__main__":
    task = Task()
    scheduler = Scheduler(task)
    scheduler.run()

改进后

  • SchedulerTask 是解耦的,易于扩展新的任务类型而无需修改 Scheduler 的代码。

循序渐进:从理论到代码实现

软件架构设计七大原则在现代开发中依然是指导高质量代码的核心思想。通过逐一分析并应用,我们不仅能减少系统复杂度,还能打造更健壮、更易维护的系统。

总结:软件架构设计七大原则的核心理念与实践

image-20241204224801000
image-20241204224801000

软件架构设计的七大原则为构建高效、可维护、灵活的系统提供了重要指导。通过实际代码示例,我们深入探讨了这些原则在实际开发中的应用,以下是对各原则的核心理解:

  1. 单一职责原则 (SRP):确保一个类只负责一项职责,从而减少代码复杂性,使得类的修改仅仅影响到它自身的责任范围。
    • 实践:通过将多个责任分配给不同的类,提高代码的可维护性。
  2. 依赖倒置原则 (DIP):强调高层模块应依赖于抽象,而非具体实现,增强系统的扩展性和可测试性。
    • 实践:通过引入抽象接口,解耦高层和低层模块,支持灵活的功能扩展。
  3. 里氏替换原则 (LSP):要求子类能够替代父类进行工作,确保继承体系的正确性。
    • 实践:设计时避免子类破坏父类预期的行为,保证多态性的正确使用。
  4. 开放封闭原则 (OCP):软件实体应该对扩展开放,对修改关闭,确保代码能够随着需求变化灵活扩展而不需要改动原有代码。
    • 实践:通过接口和抽象类设计,确保系统在添加新功能时不会影响现有功能。
  5. 接口隔离原则 (ISP):客户端不应该依赖它不需要的接口,避免接口膨胀,确保接口简洁且具有针对性。
    • 实践:拆分大型接口,确保每个接口都只包含相关的功能。
  6. 合成复用原则 (CRP):优先考虑通过对象组合来复用代码,而非通过继承,减少类之间的紧密耦合。
    • 实践:通过组合设计,使得模块和组件之间的依赖关系松散,提升灵活性和可扩展性。
  7. 迪米特法则 (LoD):类与类之间的交互应尽可能减少,避免对类内部实现的过度了解。
    • 实践:通过减少模块之间的直接依赖和交互,使得系统更加模块化,易于维护和扩展。

通过实际案例的分析,我们不仅能够理解这些原则的定义和应用场景,还能看到它们如何在现代软件架构设计中形成协同效应,推动系统设计从繁琐到简洁、从耦合到松散、从单一到灵活的转变。

最终,理解并实践这些设计原则,能够让开发者在面临复杂系统和需求变化时,做出更加稳定、可扩展、易维护的设计选择。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
M2版的MacBook Pro,硬盘速度严重降低
苹果此前发布了搭载全新 M2 芯片的全新 MacBook Air 和 13 英寸 MacBook Pro 机型。13 英寸 MacBook Pro 已经上市开售。有用户发现256GB存储版的最新MacBook Pro存在SSD降速的问题。基准测试表明,配备 M2 芯片的 MacBook Pro  13 英寸的 256GB SSD 存储性能比其 M1 同类产品要慢,现在 YouTube 博主Max Tech进行了实际压力测试表明,M2 MacBook Pro 13 英寸中的 256GB SSD 在日常使用中也表现不佳。
Mac小小心
2022/06/29
1.4K0
M2版的MacBook Pro,硬盘速度严重降低
苹果M2笔记本固态硬盘反向升级:降速还加价1500
机器之心报道 编辑:泽南、张倩 涨价 1500 元,你获得了更长时间的续航,更好的屏幕,更小的体积…… 但硬盘却降级了。 6 月 7 日,苹果在 WWDC 大会上推出的 M2 芯片成为了今年为数不多被热烈讨论的芯片。很多人都希望在苹果第一代 Arm 电脑试错之后购买第二代产品,然而在实际测试后,一些信息让我们开始犹豫。 此前已有多位评测者反映,由于电脑中存储型号的配置差异,苹果提供的入门级 M2 MacBook Pro 的 SSD 固态硬盘速度明显慢于 M1 版 MacBook Pro。 Max Tec
机器之心
2022/07/18
1.4K0
苹果M2笔记本固态硬盘反向升级:降速还加价1500
廉价的家庭工作站设备改造记录:苹果垃圾桶(Mac Pro 2013)
最近想分析一些有趣的开放数据集,考虑到综合成本,并且数据不在云端,所以我考虑再入手一台能够搭载大容量内存的设备,来帮助我省心的解决问题。
soulteary
2023/03/05
3.2K0
廉价的家庭工作站设备改造记录:苹果垃圾桶(Mac Pro 2013)
5万块苹果笔记本半夜发布,支持96GB内存
梦晨 Pine 发自 凹非寺 量子位 | 公众号 QbitAI 库克半夜搞偷袭!苹果悄悄发布全新一代Macbook Pro与Mac mini。 没有预告,没有发布会,直接官网上线。 同时亮相的还有最新M2 Pro/Max芯片,也是Mac mini这个产品线首次搭载Pro级芯片, 这一次新品宣传上依旧是各种巅峰各种强。 却被网友无情的总结为“挤牙膏”、“我唯一感知到的升级是价格”。 M2 Pro/Max:19核/38核GPU打破常规 此次上新的重头戏,就在新出的这两个M2 Pro/Max芯片了。 这两
量子位
2023/02/28
3340
5万块苹果笔记本半夜发布,支持96GB内存
CVPR上百人中招新冠,emoji成“呈堂证供”,M2 MBP被曝硬盘降速,今日更多大新闻在此
日报君 发自 凹非寺 量子位 | 公众号 QbitAI 大噶好~今天是周二。 经历了连续几日的高温天气,北京终于凉快一点儿了。 今日份科技新鲜事,日报君在此呈上~ 今日大新闻 腾讯第一大股东减持,股价闪崩 6月27日,腾讯控股在港交所发布公告称,腾讯的第一大股东Prosus(其母公司为:Naspers,南非报业集团)将出售公司股份。 Prosus/Naspers方将开启一项长期、开放式的回购计划,用以提高集团每股资产净值。 回购资金将通过Naspers集团有序小幅出售腾讯公司股票的方式逐渐获得。 也就是
量子位
2022/06/29
4020
CVPR上百人中招新冠,emoji成“呈堂证供”,M2 MBP被曝硬盘降速,今日更多大新闻在此
苹果最强芯片M1 Ultra亮相!两个M1 Max胶水拼接,性能爆表
---- 新智元报道   编辑:编辑部 【新智元导读】苹果春季发布会,库克告诉你什么叫1+1=2。 3月9日凌晨2点,苹果春季发布会,库克出了王炸。 M2没来,M2 MacBook Air更不用想了。 这次,库克直接带了M1的续杯,也是M1家族最后一位——M1 Ultra。 简单说,就是M1 Max+M1 Max,性能可不得炸裂么!!! 另外,搭载M1 Ultra的「造梦引擎」Mac Studio,高配59999元,还有它的伴侣Studio Display首发上线。 老
新智元
2022/03/09
1.1K0
性能暴涨!苹果M3系列发布:最高920亿晶体管,128GB统一内存!
10月31日早间消息,苹果公司定于美国太平洋时间10月30日17点举行一场名为“来势迅猛”(Scary Fast)的产品发布会,正式发布了最新的M3系列处理器,这也业界首款采用3nm工艺制造的个人计算机芯片,包括M3、M3 Pro和M3 Max。全新的24英寸iMac将过渡至M3系列芯片、14英寸和16英寸的MacBook Pro也将获得M3系列芯片所带来性能大幅提升。
芯智讯
2023/11/01
8500
性能暴涨!苹果M3系列发布:最高920亿晶体管,128GB统一内存!
廉价的家庭工作站设备改造记录:苹果垃圾桶(Mac Pro 2013)
最近想分析一些有趣的开放数据集,考虑到综合成本,并且数据不在云端,所以我考虑再入手一台能够搭载大容量内存的设备,来帮助我省心的解决问题。
soulteary
2023/02/04
3.4K0
苹果m2芯片和m1到底有什么区别?
苹果全球开发者大会(WWDC)上,苹果发布了新的M2芯片。全新的M2芯片采用了台积电第二代5nm工艺制程,进一步提高能耗比。同时CPU、GPU、以及AI性能也得到了进一步提升。搭载M2的macbook也已经推出。
Mac小小心
2022/06/10
5.7K0
苹果M2芯片发布:200亿晶体管,性能提升18%,新笔记本7月上市
机器之心报道 编辑:泽南 虽然是以软件为重点的大会,但 WWDC 主题演讲也是发布有趣硬件的舞台,今年的苹果并没有让人失望。 今天凌晨,苹果 WWDC 大会正式开幕,除了备受期待的新一代操作系统 macOS Ventura、iOS 16,苹果还特别地在本次开发者大会上公布了新硬件:M2 芯片和新 MacBook。 在今天的 keynote 上,苹果推出了 M2,这是用于 Mac、iPad 平台的第二代苹果自研 SoC。M2 在多线程 CPU 工作负载方面比上代性能提升约 18%,峰值 GPU 负载性能则提升
机器之心
2022/06/08
5680
苹果M2芯片发布:200亿晶体管,性能提升18%,新笔记本7月上市
顶配MacBook Pro 16上的M3 Max是什么水平?有人花56000元进行了评测
10 月 31 日,苹果在「史上最短发布会」上发布了新一代笔记本电脑和 Mac,与之而来的还有新一代 M3 芯片。
机器之心
2023/11/13
1.7K0
顶配MacBook Pro 16上的M3 Max是什么水平?有人花56000元进行了评测
苹果霸屏热搜!M2芯片新笔记本9499元起,iPhone锁屏终于可以自定义,还秀出智能车机天花板丨WWDC 2022
杨净 明敏 发自 凹非寺 量子位 | 公众号 QbitAI M2芯片来了! 带着它的MacBook来了! 更没想到的是,还是在向来以软著称的苹果开发者大会上首发亮相。 库克这波操作再次来到了大气层,于是苹果发布会的相关词条大半夜直接冲上热搜,十条占据了六条。 而且不光线上热闹,苹果园区(Apple Park)的现场也是掌声雷动。 据称这还是第一次开发者来到苹果园区参加WWDC,结果乔布斯剧院被挤得满满当当,要知道这个地方仅容纳1000人。 除了炸翻全场的硬件产品外,还有全新的iOS、iPadOS、wat
量子位
2022/06/07
6740
苹果霸屏热搜!M2芯片新笔记本9499元起,iPhone锁屏终于可以自定义,还秀出智能车机天花板丨WWDC 2022
苹果M2 Pro / M2 Max发布:性能提升至全新高度!
北京时间1月17日晚间,苹果召开2023年的首场新品发布会,正式发布了2023款MacBook Pro,拥有多个版本,将分别搭载全新的M2 Pro和M2 Max芯片,将MacBook Pro的性能提升到了新的高度。
芯智讯
2023/02/09
1.2K0
苹果无预警发布升级版M2芯片!性能提升40%,将搭载MacBook Pro,1.6万元起售
大数据文摘出品 作者:Caleb 悄悄地,它来了,挥了挥衣袖,准备带走你的年终奖。 就很突然的,北京时间1月17日晚,苹果在官网上直接上架了两款新品,这速度让文摘菌怀疑自己是不是错过了一场发布会。 这次上架的Macbook Pro和Mac Mini是苹果2023年的首波新品,根据官网显示,新品在1月19日上午9点开始订购,2月3日发售。 库克,就这么急吗? 别急着剁手,先和文摘菌一起来看看这次的新品到底有几分诚意。 M2家族添新成员 万众期待的M2 Pro/Max终于随着这次更新悄然落地了。 去年6月,M
大数据文摘
2023/02/23
9770
苹果无预警发布升级版M2芯片!性能提升40%,将搭载MacBook Pro,1.6万元起售
首次采用 3nm 制程、比 M1 Max 快 80%!苹果亮相 M3 系列芯片,最高搭载 40 核 GPU
10 月 31 日,以“Scary Fast(快得吓人)”为主题对苹果新品发布会如约而至。在此次发布会上,Apple 宣布推出全新 MacBook Pro 系列,采用全新 M3 芯片系列:M3、M3 Pro 和 M3 Max。据悉,M3 系列芯片采用 3nm 制程工艺,在 CPU 和 GPU 方面都有了重大改进。这三款 3nm 制程芯片能满足不同用户的需求。
深度学习与Python
2023/11/06
4550
首次采用 3nm 制程、比 M1 Max 快 80%!苹果亮相 M3 系列芯片,最高搭载 40 核 GPU
苹果新品突然上架,全新M2 Pro/Max芯片,14寸 MacBook Pro 15999起售
---- 新智元报道   编辑:David Joey 【新智元导读】昨晚,没有发布会,没有造势,苹果打了所有人一个「措手不及」,在官网更新多款Mac新品,均搭载M2 Pro/Max芯片,14寸MacBook Pro15999起售,下月开卖。 农历新年将至,苹果有些出人意料地在官网上更新了MacBook Pro和Mac mini的新品。 新的MacBook和Mac mini均搭载了苹果最新的M2 Pro或M2 Max芯片,也是迄今为止MacBook和Mac mini上搭载的最强大的苹果处理器。 据苹
新智元
2023/02/24
5230
苹果新品突然上架,全新M2 Pro/Max芯片,14寸 MacBook Pro 15999起售
Vision Pro芯片级拆解:内含大量TI芯片,还有一颗国产芯片!
国外专业的拆解机构iFixit在2月3日率先发布了对Vision Pro的拆解报告之后,2月7日,iFixit发布了对Vision Pro更为深入芯片级的分析报告,显示其中有着大量的德州仪器(TI)芯片,还有兆易创新的NorFlash。
芯智讯
2024/02/26
3320
Vision Pro芯片级拆解:内含大量TI芯片,还有一颗国产芯片!
苹果新款MacBook Air VS MacBook Pro:应该买哪款笔记本电脑?
新款 MacBook Air 和新款 MacBook Pro 都足以登上我们最好的笔记本电脑名单。因此很多想购买MacBook的小伙伴不知道该选择哪一款,一起来看看哪个更适合你吧。
Mac小小心
2022/06/08
1.2K0
拆解iPhone 15 Pro Max:内部细节及元器件大曝光!
近日,苹果新一代智能手机iPhone 15系列已经上市开售,国外专业拆解机构iFixit也第一时间对于iPhone 15 Pro Max进行了拆解。
芯智讯
2023/09/27
1.2K0
拆解iPhone 15 Pro Max:内部细节及元器件大曝光!
M1空降“双芯”成员,MacStudio突破性能天花板!苹果还用iPadAir拿捏了性价比
大数据文摘出品 作者:Caleb 来了,背负着无数果粉的期待,那个男人又来了! 美国东部时间3月8日下午1点,苹果召开2022年春季发布会,不同于以往春季发布会只会做一些常规更新,早在发布会开始之前就传出了新iPhone SE、新iPad Air和新Mac,甚至是新的独立显示器。 种种传言都让这场发布会充满了悬念和看点。 随着发布会的推进,上述信息也逐一得到验证:搭载了A15处理器的iPhone SE,全新苍岭绿iPhone 13,搭载了M1处理器的史上最强iPad Air和它的基佬紫配色…… 还远远不
大数据文摘
2022/03/09
1.1K0
推荐阅读
M2版的MacBook Pro,硬盘速度严重降低
1.4K0
苹果M2笔记本固态硬盘反向升级:降速还加价1500
1.4K0
廉价的家庭工作站设备改造记录:苹果垃圾桶(Mac Pro 2013)
3.2K0
5万块苹果笔记本半夜发布,支持96GB内存
3340
CVPR上百人中招新冠,emoji成“呈堂证供”,M2 MBP被曝硬盘降速,今日更多大新闻在此
4020
苹果最强芯片M1 Ultra亮相!两个M1 Max胶水拼接,性能爆表
1.1K0
性能暴涨!苹果M3系列发布:最高920亿晶体管,128GB统一内存!
8500
廉价的家庭工作站设备改造记录:苹果垃圾桶(Mac Pro 2013)
3.4K0
苹果m2芯片和m1到底有什么区别?
5.7K0
苹果M2芯片发布:200亿晶体管,性能提升18%,新笔记本7月上市
5680
顶配MacBook Pro 16上的M3 Max是什么水平?有人花56000元进行了评测
1.7K0
苹果霸屏热搜!M2芯片新笔记本9499元起,iPhone锁屏终于可以自定义,还秀出智能车机天花板丨WWDC 2022
6740
苹果M2 Pro / M2 Max发布:性能提升至全新高度!
1.2K0
苹果无预警发布升级版M2芯片!性能提升40%,将搭载MacBook Pro,1.6万元起售
9770
首次采用 3nm 制程、比 M1 Max 快 80%!苹果亮相 M3 系列芯片,最高搭载 40 核 GPU
4550
苹果新品突然上架,全新M2 Pro/Max芯片,14寸 MacBook Pro 15999起售
5230
Vision Pro芯片级拆解:内含大量TI芯片,还有一颗国产芯片!
3320
苹果新款MacBook Air VS MacBook Pro:应该买哪款笔记本电脑?
1.2K0
拆解iPhone 15 Pro Max:内部细节及元器件大曝光!
1.2K0
M1空降“双芯”成员,MacStudio突破性能天花板!苹果还用iPadAir拿捏了性价比
1.1K0
相关推荐
M2版的MacBook Pro,硬盘速度严重降低
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 什么是软件架构设计的七大原则?
  • 单一职责原则:职责清晰,代码简洁
    • 案例:改进用户管理系统
  • 依赖倒置原则:面向接口编程,依赖抽象
    • 案例:灵活的支付模块
  • 深化理解:七大原则的协同效应
    • 相辅相成的设计原则
  • 里氏替换原则:保障继承的行为一致性
    • 案例:几何形状的周长计算
  • 开放封闭原则:对扩展开放,对修改关闭
    • 案例:日志记录系统
  • 接口隔离原则:避免臃肿的接口
    • 案例:改进支付接口
  • 合成复用原则:优先使用组合,而非继承
    • 案例:任务调度器
  • 循序渐进:从理论到代码实现
    • 总结:软件架构设计七大原则的核心理念与实践
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档