Python设计模式(第2版) - (EPUB全文下载)
文件大小:0.25 mb。
文件格式:epub 格式。
书籍内容:
Python设计模式(第2版)
第1章 设计模式简介
第2章 单例设计模式
第3章 工厂模式:建立创建对象的工厂
第4章 门面模式——与门面相适
第5章 代理模式——控制对象的访问
第6章 观察者模式——了解对象的情况
第7章 命令模式——封装调用
第8章 模板方法模式——封装算法
第9章 模型—视图—控制器——复合模式
第10章 状态设计模式
第11章 反模式
欢迎来到异步社区!
第1章 设计模式简介
在本章中,我们将详细介绍面向对象编程的基础知识,并深入探讨面向对象的设计原理,以便为本书后面介绍的高级主题打下坚实的基础。此外,本章还将简要介绍设计模式的概念,使你能够了解软件开发中设计模式的背景和应用。在这里,我们也将设计模式分为三大类型:创建型、结构型和行为型模式。因此,本章中主要涵盖以下主题:
理解面向对象编程;
讨论面向对象的设计原则;
理解设计模式的概念及其分类和背景;
讨论动态语言的设计模式;
设计模式的分类——创建型模式、结构型模式和行为型模式。
1.1 理解面向对象编程
在开始学习设计模式之前,我们不妨先来了解一下相关的基础知识,并进一步熟悉Python面向对象的范式。面向对象的世界引入了对象的概念,而这些对象又具有属性(数据成员)和过程(成员函数)。这些函数的作用就是处理属性。
这里,我们以对象Car为例进行说明。对象Car不仅拥有多种属性,如fuel level(油位)、isSedan(是否为轿车)、speed(速度)、steering wheel(方向盘)和coordinates(坐标),同时还拥有一些方法,例如accelerate()方法用来提供速度,而takeleft()方法则可以让车左转。自Python的第1版发布之后,它也变成了一种面向对象的语言。正如它声明的那样,在Python中,一切皆对象。每个类的实例或变量都有它自己的内存地址或身份。对象就是类的实例,应用开发就是通过让对象交互来实现目的的过程。为了理解面向对象程序设计的核心概念,我们需要深入理解对象、类和方法。
1.1.1 对象
我们可以通过以下几点来描述对象。
它们表示所开发的应用程序内的实体。
实体之间可以通过交互来解决现实世界的问题。
例如,Person是实体,而Car也是实体。Person可以驾驶Car,从一个地方开到另一个地方。
1.1.2 类
类可以帮助开发人员表示现实世界中的实体。
类可以定义对象的属性和行为。属性是数据成员,行为由成员函数表示。
类包含了构造函数,这些函数的作用是为对象提供初始状态。
类就像模板一样,非常易于重复使用。
例如,类Person可以带有属性name和age,同时提供成员函数gotoOffice(),以定义去办公室工作的行为。
1.1.3 方法
以下几点描述了方法在面向对象的世界中的作用。
它们表示对象的行为。
方法可以对属性进行处理,从而实现所需的功能。
下面是在Python v3.5中创建类和对象的一个例子:
class Person(object):
def __init__(self, name, age): #constructor
self.name = name #data members/ attributes
self.age = age
def get_person(self,): # member function
return "
p = Person("John", 32) # p is an object of type Person
print("Type of Object:", type(p), "Memory Address:", id(p))
上述代码的输出结果如图1-1所示。
图1-1
1.2 面向对象编程的主要概念
现在我们已经了解了面向对象编程的基础知识,下面让我们深入了解面向对象编程的主要概念。
1.2.1 封装
封装的主要特点如下所示。
对象的行为对于外部世界来说是不可见的,或者说对象的状态信息是私密的。
客户端不能通过直接操作来改变对象的内部状态。相反,客户端需要通过发送消息来请求对象改变其内部状态。对象可以根据请求的类型,通过特定的成员函数(例如get和set)改变它们的内部状态,以做出相应的响应。
在Python中,封装(数据和方法的隐藏)的概念不是隐式的,因为它没有提供封装所需的关键字,诸如public、private和protected(在诸如C++或Java之类的语言中,都提供了这些关键字)。当然,如果在变量或函数名前面加上前缀__,就可以将其可访问性变为私有。
1.2.2 多态
多态的主要特征如下所示。
多态有两种类型。
对象根据输入参数提供方法的不同实现。
不同类型的对象可以使用相同的接口。
对于Python来说,多态是该语言的内置功能。例如,操作符“+”可以应用于两个整数以进行加法运算,也可以应用于字符串来连接它们。在下面的示例中,字符串、元组或列表都可以通过整数索引进行访问。
它为我们展示了Python内置类型的多态:
a = "John"
b = (1,2,3)
c = [3,4,6,8,9]
print(a[1], b[0], c[2])
1.2.3 继承
以下几点有助于我们更好地理解继承过程。
继承表示一个类可以继承父类的(大部分)功能。
继承被描述为一个重用基类中定义的功能并允许对原始软件的实现进行独立扩展的选项。
继承可以利用不同类的对象之间的关系建立层次结构。与Java不同,Python支持多重继承(继承多个基类)。
在下面的代码示例中,类A是基类,类B继承了类A的特性。因此,类B的对象可以访问类A的方法:
class A:
def a1(self):
print("a1")
............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Python设计模式(第2版) - (EPUB全文下载)