python学习09

面向对象

1.单例模式

目的是为了确保某一类只有一个实例存在。我们可以使用__new__来控制实例的创建过程,代码如下:

class Singleton(object):
    _instace=None   #做一个标识 如果等于None说明还没被创建过
    def __new__(cls, *args, **kwargs):
        print('__new__')
        if cls._instace == None:
            cls._instace = object.__new__(cls)
            return cls._instace
        else:
            return cls._instace

s1=Singleton()
s2=Singleton()
s3=Singleton()
print(id(s1))
print(id(s2))
print(id(s3))
#以上输出得到的ID地址为同一个,证明单例创建成功

在上面的代码中,我们将类的实例和一个类变量_instance关联起来,如果cls._instance为None则创建实例,否则直接返回cls._instance。

2.工厂模式(Simple Factory Pattern)

是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类 并且重写父类方法。

采用简单工厂的优点是可以使用户根据参数获得对应的类实例,避免了直接实例化类,降低了耦合性;

缺点是可实例化的类型在编译期间已经被确定,如果增加新类型,则需要修改工厂,不符合OCP(开闭原则)的原则。

(OCP原则:一个软件应用对扩展开放,对修改关闭)

多态:不同的类对同一个消息/动作做出不同的解释,执行不一样的代码
3个必要条件
1.发生继承关系
2.子类重写父类方法
3.里氏代换原则

好处:节省代码 更符合现实逻辑

下面我们看一个例子:

要求输入两个数和一个运算符,进行四则运算并输出得到结果。

类的结构图:


class Operation:    #父类
    def __init__(self,num1,num2):
        self.num1=num1
        self.num2=num2
    d
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值