Head first 设计模式 笔记1

本文介绍了软件设计的五大基本原则,包括变化独立、接口编程、多用组合、松耦合及依赖倒置等,并详细阐述了六种常用设计模式:策略模式、观察者模式、装饰者模式、工厂方法模式、抽象工厂模式和单例模式。
设计原则:
1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需变化的代码混在一起。
2.针对接口编程,而不是针对实现编程。
3.多用组合,少用继承。
4.松耦合
5.类应该对扩展开放,对修改关闭
     ——在不修改原有的模块(修改关闭:稳定性)的基础上,能扩展其功能(扩展开放:可扩展性)
6.依赖倒置原则
     要依赖抽象,不要依赖具体类。
     原则:
     a.变量不可以持有具体类的引用。
     b.不要让类派生自具体类。
     c.不要覆盖基类中已实现的方法。

模式:
1.策略模式
     定义了算法族,分别封装起来(将算法或行为封装在类中,并在客户类中保持该类的一个引用),让他们之间可以相互替换。
     此模式让算法的变化独立于使用算法的客户。     
     Has-A比Is-A更好。


2.出版者+订阅者=观察者模式(代表人物——MVC)
     定义了对象间的一对多依赖,一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。





3.装饰者模式(包装模式更形象)
     动态的将责任附加到对象上。
     此模式提供了比继承更有弹性的替代方案。






4.工厂方法模式:
     定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。



5.抽象工厂模式(创建产品家族):
     提供一个接口,用来创建相关或依赖对象的家族,而不需要明确指定具体类。
抽象工厂里的每一个创建方法都是一个工厂方法。
     



6.单件模式
     考虑多线程时:
     a.将static getInstance()方法同步——影响性能
     b.取消延迟实例化——一开始就会产生一个实例
     c.双重检查枷锁——第一次产生实例后,不再同步
内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值