python_类的设计模式

策略模式
class Moveable:
    def move(self):
        print("move...")

class Moveonfeet:
    def move(self):
        print("move on feet...")

class Moveonwheel:
    def move(self):
        print("move on wheel...")

class MoveObj:

    def set_move(self,moveable):
        self.moveable = moveable()

    def move(self):
        self.moveable.move()

class Test:
    def move(self):
        print("I'm Fly.")
if __name__ =='__main__':
    m=MoveObj()

    m.set_move(Moveable)
    m.move()

    m.set_move(Moveonfeet)
    m.move()

    m.set_move(Moveonwheel)
    m.move()

    m.set_move(Test)
    m.move()


def Movea():
    print("move a...")

def Moveb():
    print("move b...")

class MoveObj:

    def set_move(self,moveable):
        self.moveable = moveable  #()

    def move(self):
        self.moveable()  #()

if __name__ =='__main__':
    m=MoveObj()

    m.set_move(Movea)
    m.move()

    m.set_move(Moveb)
    m.move()

#装饰模式
class Tree:
    def start(self):
        print("tree a ...")

    def mid(self):
        print("tree b...")

class Decorater:
    def __init__(self,T):
        self.t=T()

    def add_start(self):
        print("start first add...")
        self.t.start()

    def add_mid(self):
        print("start second add...")
        self.t.start()

if __name__ == '__main__':

    tree=Tree()
    tree.start()
    tree.mid()

    dec=Decorater(Tree)
    dec.add_start()
    dec.add_mid()

def Decorater(a_class):
    class NewClass:
        def __init__(self,age,color):
            self.old = a_class(age)
            self.color = color

        def display(self):
            print(self.color)
            print(self.old.age) #!!!
    return NewClass

@Decorater
class Dog:
    def __init__(self,age):
        self.age = age

    def display(self):
        print(self.age)

if __name__ == '__main__':
    dog=Dog(12,'red')
    print(dog.display())


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值