python设计模式之设计模式简介



一、理解面向对象编程

python设计模式之设计模式简介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.继承

python设计模式之设计模式简介

                   3.1子类可以继承父类(大部分)功能。(例子中B 继承了A)

                   3.2子类可以扩展基类的功能。

                   3.3python支持多重继承。可以利用不同类的对象之间的关系建立层次结构。

       4.抽象

python设计模式之设计模式简介python设计模式之设计模式简介

                  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