python设计模式之设计模式简介
一、理解面向对象编程
1.对象
1.1 表示程序内的实体。
1.2 实体能够交互来解决问题。
1.3 类实例化后即成为对象。(例子中的p)
2.类
2.1定义对象的属性和行为。属性就是数据成员(例子中的name和age),行为就是函数(例子中的get_person)。
2.2类中含有构造函数,用于给对象初始化。(例子中的_init_)。
2.3类能够重复使用。
3.方法
3.1方法是表示对象的行为(例子中的get_person)。
3.2.方法能够对属性进行处理(例子中get_person 打印了属性)。
二、面向对象编程的主要概念
1.封装
1.1将行为封装到类中,对外不可见。
1.2客户端不能通过直接操作来改变对象的内部状态。
1.3python中,对类属性和方法的的封装不是隐式的,无public,private等关键字
2.多态
2.1对象根据输入的参数提供方法的不同实现。不同类型的对象可以使用相同的接口。
2.2多态是python语言内置的功能。例如'+'操作符。既可以加两个整数,也可以加两个字符串。
3.继承
3.1子类可以继承父类(大部分)功能。(例子中B 继承了A)
3.2子类可以扩展基类的功能。
3.3python支持多重继承。可以利用不同类的对象之间的关系建立层次结构。
4.抽象
4.1提供简单的客户端接口,客户端可通过该接口与类的对象进行交互。
4.2内部类的复杂性抽象成接口,客户端无须关心内部实现。(例子中将加法运算进行抽象)
5.组合
5.1将对象或类组合成更复杂的数据结构或软件实现。
5.2使用组合,能够让一个对象调用其他模块的函数。从而减少继承的使用。
三、面向对象的设计原则
1.开放封闭原则
类或对象及其方法对于扩展开发,对于修改封闭。
2.控制反转原则
高层级模块不应该依赖于低层级模块。中间应该提供抽象层耦合。
3.接口隔离原则
客户端不应该依赖于他们不需要使用的接口
4.单一职业原则
类的职责单一,引起类变化的原因单一。
5.替换原则
派生类必须能够完全取代基类。
四、设计模式的概念
1.设计模式的优点
1.1复用性高。
1.2问题可以在架构级别解决。
1.3前人的经验总结。
1.4具有可靠性和依赖性。
2.设计模式的分类
2.1代码段:用某种语言棉鞋的一段具有特定用途的代码。
2.2设计:用来解决某个特定问题的优秀解决方案。
2.3标准:解决某类问题的方法,通用性高,适用于当前情况。
2.4模式: 经过时间考验的、高效、可扩展的解决方案,能够解决一类已知问题。
3.上下文---设计模式的适用性
3.1参与者:设计模式中用到的类。
3.2非功能需求:内存优化,可用性,性能等需求。
3.3权衡:非所有的设计模式都适用于应用程序开发,需要做权衡。
3.4结果:如果实用性不好,可能会对代码带来负面影响。
五、动态语言的设计模式(python)
1.类型和类是运行时对象
2.变量可以根据赋值确定类型
3.动态语言在类限制方面具有灵活性。
4.多态是固有属性。
六、模式的分类
1.创建型模式
1.运行机制是基于对象的创建。
2.他们将对象创建的细节格力。
3.代码与所创建的对象的类型无关。
2.结构型模式
1.通过组合获得更强大的功能的对象和类的结构。
2.重点是简化结构并识别类和对象之间的关系
3.他们关注类的集成和组合。
3.行为型模式
1.他们关注对象之间的交互以及对象的响应性。
2.对象应该能够交互,同时仍然保持松散耦合。
本系列项目代码地址:Python-design-pattern