设计模式,即面对一般问题的解决方案
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();
}
};