设计模式


设计模式,即面对一般问题的解决方案

1. 策略模式

open for extension, closed for modification

参考:python 策略模式

策略模式,货币转换:

class ex:
    def __init__(self):
        print("转换成外币数:")

class ex_en(ex):
    def __init__(self):
        super().__init__()
        self.rate = 0.1563
    def change(self,num):
        return self.rate*num

class ex_jp(ex):
    def __init__(self):
        super().__init__()
        self.rate = 17.1872
    def change(self,num):
        return self.rate*num

class ex_eu(ex):
    def __init__(self):
        super().__init__()
        self.rate = 0.1289
    def change(self,num):
        return self.rate*num

class cn:
    def __init__(self, strategy):
        self.strategy = strategy
    def get_res(self, m):
        return self.strategy.change(m)

if __name__ == "__main__":
    a = int(input("请输入现有人名币金额:"))
    c = int(input("输入兑换的币种(1)USD(2)JPY(3)EUR"))
    if c==1:
        tmp = cn(ex_en())
    elif c==2:
        tmp = cn(ex_jp())
    elif c==3:
        tmp = cn(ex_eu())
    else:
        print("error")
    print(tmp.get_res(a))

2. 观察者模式

,又叫发布-订阅模式

参考:简说设计模式——观察者模式

3. 装饰模式

允许向一个现有的对象添加新的功能,同时又不改变其结构。

//这是一个装饰类,从抽象类 Food 中派生

class Hot : public Food {
public:
    Food* pf;
    Hot(Food *p);
    void add_pepper() {
        cout << "\n" << pf->get_name() << endl;
        cout << "is add_pepper, complete!" << endl;
    }
    void makeit() {
        pf->makeit();
        add_pepper();
    }
};

文章作者: ╯晓~
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ╯晓~ !
评论
  目录