设计模式学习笔记

一,设计模式简介

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。

设计模式已经经历了很长一段时间的发展,它们提供了软件开发过程中面临的一般问题的最佳解决方案。学习这些模式有助于经验不足的开发人员通过一种简单快捷的方式来学习软件设计。


二,设计模式的六大原则

1、开闭原则(Open Close Principle)
实现热插拔,提高扩展性。

2、里氏代换原则(Liskov Substitution Principle)
实现抽象的规范,实现子父类互相替换。

3、依赖倒转原则(Dependence Inversion Principle)
针对接口编程,实现开闭原则的基础。

4、接口隔离原则(Interface Segregation Principle)
降低耦合度,接口单独设计,互相隔离。

5、迪米特法则,又称最少知道原则(Demeter Principle)
又称不知道原则:功能模块尽量独立。

6、合成复用原则(Composite Reuse Principle)
尽量使用聚合,组合,而不是继承。


三,设计模式的类型

特别的设计模式

根据设计模式的参考书 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 中所提到的,总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。

1,创建型模式

这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用新的运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

主要解决:主要解决接口选择的问题。

主要解决:主要解决接口选择的问题。

主要解决:一个全局使用的类频繁地创建与销毁。

主要解决:主要解决在软件系统中,有时候面临着”一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。

主要解决:在运行期建立和删除原型。

2,结构型模式

这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。

主要解决:主要解决在软件系统中,常常要将一些”现存的对象”放到新的环境中,而新环境要求的接口是现对象不能满足的。

主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。

  • 过滤器模式(Filter、Criteria Pattern)

过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。

  • 组合模式(Composite Pattern)

主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。

  • 装饰器模式(Decorator Pattern)

主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。

  • 外观模式(Facade Pattern)

主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。

  • 享元模式(Flyweight Pattern)

主要解决:在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。

  • 代理模式(Proxy Pattern)

主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。

3,行为型模式

这些设计模式特别关注对象之间的通信。

  • 责任链模式(Chain of Responsibility Pattern)

主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。

  • 命令模式(Command Pattern)

主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。

  • 解释器模式(Interpreter Pattern)

主要解决:对于一些固定文法构建一个解释句子的解释器。

  • 迭代器模式(Iterator Pattern)

主要解决:不同的方式来遍历整个整合对象。

  • 中介者模式(Mediator Pattern)

主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。

  • 备忘录模式(Memento Pattern)

主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。

主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。

  • 状态模式(State Pattern)

主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。

  • 空对象模式(Null Object Pattern)

在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。
在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。

  • 策略模式(Strategy Pattern)

主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。

  • 模板模式(Template Pattern)

主要解决:一些方法通用,却在每一个子类都重新写了这一方法。

  • 访问者模式(Visitor Pattern)

主要解决:稳定的数据结构和易变的操作耦合问题。


四,学习资料

C#设计模式
Java设计模式


五,参考资料

http://www.runoob.com/design-pattern/design-pattern-tutorial.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CMOS模拟集成电路设计学习笔记 CMOS模拟集成电路设计学习是电子工程领域中的重要一环。CMOS(互补金属氧化物半导体)技术在现代集成电路设计中起着至关重要的作用。在学习CMOS模拟集成电路设计过程中,我对以下几个方面有所收获。 首先,电路的基本理论知识是学习CMOS模拟集成电路设计的基础。了解电路设计中的电压、电流、电阻、电容等基本概念,掌握基本的电路分析方法和技巧,对于有效地进行CMOS模拟集成电路设计非常重要。 其次,掌握CMOS技术的原理和特点。CMOS技术是使用N型和P型MOS管并排组成的电路结构,相比于其他技术,CMOS技术具有功耗低、抗干扰能力强等优势。了解CMOS技术的工作原理和特点,能够更好地应用于模拟集成电路的设计和优化过程中。 再次,学习射极耦合放大器(CAS)的设计和优化方法。CAS是模拟电路设计中常用的基本模块,具有放大增益高、抗干扰能力强等特点。通过学习CAS的设计和优化方法,能够更好地理解和应用于CMOS模拟集成电路设计中。 此外,了解电流镜、共源共排模式放大器、差分放大器、反馈电路等常见的CMOS模拟集成电路结构和设计技巧,对于深入理解CMOS模拟集成电路设计原理和方法非常有帮助。 最后,实践是学习CMOS模拟集成电路设计的重要环节。通过自己动手设计具体的电路实例,理解并解决实际问题,能够增加对理论知识的应用和理解。 总之,学习CMOS模拟集成电路设计需要掌握电路基本知识、了解CMOS技术原理和特点、学习常见的电路结构和设计技巧,并进行实践应用。通过不断学习和实践,我相信在CMOS模拟集成电路设计领域中会有更大的进步。 ### 回答2: cmos模拟集成电路设计是现代电子领域的重要研究方向之一。在学习过程中,我了解到cmos模拟集成电路设计的基本原理和方法,以及在实际应用中的一些注意事项。 首先,cmos模拟集成电路是一种使用cmos(互补金属氧化物半导体)技术制造的集成电路,其中的晶体管由n型和p型金属氧化物半导体场效应晶体管(NMOS和PMOS)组成。cmos模拟集成电路设计主要涉及到电流源、放大器、运算放大器、滤波器等模块的设计。 在设计过程中,要考虑电路的性能指标,如增益、带宽、噪声等。同时,为了提高电路的稳定性和可靠性,需要注意电路中的电源抑制、温度补偿、布线规划等方面的问题。 另外,cmos模拟集成电路设计还需要掌握一些基本的设计工具和方法。如Spice仿真工具的使用,可以通过仿真验证设计的正确性和性能指标。还有一些常用的设计技巧,如工作在互补模式、差分放大器、共模反馈电路等,可以有效提高电路的性能。 在实际应用中,cmos模拟集成电路设计广泛应用于各个领域。例如,用于通信系统中的放大器、滤波器等电路设计,用于传感器中的信号处理电路设计等。因此,掌握cmos模拟集成电路设计的知识和技能对于从事电子工程的相关人员来说是非常重要的。 总之,cmos模拟集成电路设计学习笔记包括了基本原理和方法,设计工具和技巧,以及实际应用等方面的内容。通过学习和掌握这些知识和技能,可以提高我们在cmos模拟集成电路设计方面的能力和水平。 ### 回答3: CMOS模拟集成电路设计学习笔记是我在学习过程中记录的一本笔记,总结了我对CMOS模拟集成电路设计的理解和经验。 首先,CMOS模拟集成电路是一种重要的集成电路设计技术,它利用CMOS工艺制造出的器件来实现各种模拟电路功能。学习CMOS模拟集成电路设计,首先需要了解CMOS工艺的基本原理和特点。CMOS工艺是一种使用N型细长沟道和P型细长沟道场效应管组成的半导体工艺,它具有电压驱动强、功耗低、噪声小等优点。此外,还需要学习CMOS工艺的制造工艺流程和工艺参数的选择。 在设计CMOS模拟集成电路时,首先需要进行电路的建模与分析。我学习了基本的电路理论与分析方法,如放大电路、逻辑电路、反馈电路等,并学会了使用理想运放进行电路近似分析。此外,还学习了CMOS器件的模型和特性,如MOSFET的输出特性曲线、小信号模型等。通过电路建模与分析,可以更好地理解电路的工作原理和设计要素。 然后,学习了CMOS模拟电路的常见设计技术和方法。其中,包括源随器的设计与优化、偏置电路设计、放大电路设计、运算放大器设计等。在设计过程中,我学会了使用EDA工具进行电路仿真和验证,以及对电路进行性能指标的评估。通过反复实践和调试,我逐渐掌握了设计方法和技巧。 最后,我还学习了一些高级的CMOS模拟集成电路设计技术,如电压参考电路设计、数据转换电路设计、低功耗设计等。这些技术使得我能够设计更加复杂和高性能的CMOS模拟集成电路,提高了我的设计能力和水平。 通过CMOS模拟集成电路设计学习笔记的记录和总结,我不仅巩固了自己的知识和理解,还积累了更多的设计经验。这本笔记对于我今后的工作和学习都具有重要的参考价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值