首页 > 编程语言 > 详细

python-特征/原则/设计模式

时间:2019-11-24 14:35:59      阅读:84      评论:0      收藏:0      [点我收藏+]

 

面向对象总结:

面向对象
概述
面向过程:关心解决问题的步骤(实现)。 算法 + 数据结构
面向对象:关心解决问题的人。 对象 + 交互
抽象:从多个事物中,舍弃个性非本质的特征,
抽离出共性与本质的过程。
类和对象
对象:大杯子 小杯子 中杯子
具体的 实例(个体)
类:杯子(数据:高度 行为:盛水)
抽象的 概念(类别)
成员:
实例成员(变量、方法):对象的
类成员(变量、方法):大家的
静态方法:略
三大特征:
封装:【分】 分而治之、变(行为)则疏之.
标准:高内聚低耦合
继承:【隔】抽象 --> 统一 --> 隔离

多态:【执】重写(覆盖) 通过调用父,执行子。

六大原则:
开闭原则:(目标) 增加新功能,不修改客户端代码.
单一职责:一个有且只有一个改变的原因.
依赖倒置:调用父(稳定、抽象),不要调用子(多变,具体).
组合复用:不要用继承(是一种)复用,多用组合(有一个)复用。
组合关系连接客户端代码与多变的功能
人 火车/飞机..等交通工具
员工管理器 程序员/测试员..等员工
继承关系抽象多变的功能
员工 --> 程序员/测试员
里氏替换:看见爸爸可以传递儿子
儿子替换爸爸后依然可以工作(扩展重写)
迪米特法则:低耦合

 


单列模式:

class A: #同一个对象,可修改属性数据 后续实例化属性数据,相当于修改的对象都是第一个对象 多个变量指向一个对象
def __new__(cls, *args, **kwargs):
if not hasattr(cls, ‘_instance‘):
cls._instance = super().__new__(cls)
return cls._instance

def __init__(self, name, age):
self.name = name
self.age = age


if __name__ == ‘__main__‘:
a = A(‘li‘, 24)
b = A(‘lu‘, 25)
print(id(a), a.name)
print(id(b), b.name)
>>>140585962612104 lu
>>>140585962612104 lu

class A: #同一个对象,不可修改属性数据
_isfirst=True
def __new__(cls, *args, **kwargs):
if not hasattr(cls, ‘_instance‘):
cls._instance = super().__new__(cls)
return cls._instance

def __init__(self, name, age):
self.name = name
self.age = age


if __name__ == ‘__main__‘:
a = A(‘li‘, 24)
b = A(‘lu‘, 25)
print(id(a), a.name)
print(id(b), b.name)

>>>139731384149160 li
>>>139731384149160 li


策略模式:

class B:
def kill(self):
print(‘杀人‘)


class B1(B):
def kill(self):
print(‘用枪杀人‘)


class B2(B):
def kill(self):
print(‘用刀杀人‘)


class B3(B):
def kill(self):
print(‘用剑杀人‘)


b1 = B1()
b2 = B2()
b3 = B3()


def func(B):
# 要B的对象,实际可以传入子类的对象,实际执行子类重写的kill()方法
B.kill()


func(b1)
func(b2)
func(b2)

>>>用枪杀人
>>>用刀杀人
>>>用刀杀人

 

各种设计模式:
三大特征/六大原则的使用;父类统筹抽象概念化,子类重写多态化,调用抽象父类,实际传入子类,执行子类方法
父类可以作为调用者的属性参数传入使用,
class A:
pass
class B(A):
pass
class C(A):
pass
class D(A):
pass

实例化方法init的传入参数
class Manager:
def __init__(self,A):
pass

init的私有变量
class Manager:
def __init__(self):
self.a=A

实例方法的传入参数
class Manager:
def __init__(self):
pass
def func(self,A):
pass


实例方法的私有变量

class Manager:
def __init__(self):
pass
def func(self):
a=A
pass

python:一切皆对象,对象都可赋值给变量,作为函数/类的参数或返回值

 

python-特征/原则/设计模式

原文:https://www.cnblogs.com/chenlulu1122/p/11922128.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!