设计模式--学习中---持续更新。。。。
2018-06-18 01:55:41来源:未知 阅读 ()
1 from abc import ABCMeta, abstractmethod 2 3 class Payment(metaclass=ABCMeta):#继承抽象类约束 4 @abstractmethod 5 def pay(self,money): 6 pass 7 8 9 class Alipay(Payment): 10 def __init__(self,yeb=False): 11 self.yeb=yeb 12 def pay(self,money): 13 if self.yeb: 14 print('余额宝支付%s元'%money) 15 else: 16 print('支付宝支付%s元'%money) 17 18 class ApplePay(Payment): 19 def pay(self,money): 20 print('苹果支付%s元'%money) 21 class WeChatpay(Payment): 22 def payx(self,money): 23 print('微信支付%s元'%money) 24 25 26 class PaymentFactory: 27 def create_payment(self,method): 28 if method =='alipay': 29 return Alipay() 30 elif method =='yeb': 31 return Alipay(True)#多参数 32 elif method =='applepay': 33 return ApplePay() 34 else: 35 raise NameError(method) 36 37 f = PaymentFactory()#创建对象实例 38 p=f.create_payment('alipay')#传参就可以实现不同的功能 39 s=f.create_payment('applepay')#传参就可以实现不同的功能 40 ss=f.create_payment('yeb')#传参就可以实现不同的功能 41 p.pay(100) 42 s.pay(200) 43 ss.pay(300)
单例模式-----
1 class Singleton(object): 2 def __new__(cls, *args, **kwargs): 3 if not hasattr(cls,"_instance"):#如果没有实例时, 4 cls._instance=super(Singleton,cls).__new__(cls)#实例化一个对象 5 return cls._instance #返回已有的实例 6 7 class MyClass(Singleton): 8 def __init__(self,name=None): 9 if name: 10 self.name=name 11 12 a =MyClass('a') 13 b =MyClass() 14 print(b.name)
1 from abc import ABCMeta, abstractmethod 2 3 #---------------------抽象产品类--------------- 4 5 class CPU(metaclass=ABCMeta):#CPU 6 @abstractmethod 7 def show_cpu(self): 8 pass 9 10 class Memory(metaclass=ABCMeta):#内存 11 @abstractmethod 12 def show_memory(self): 13 pass 14 15 class Board(metaclass=ABCMeta):#主板 16 @abstractmethod 17 def show_board(self): 18 pass 19 20 class Disk(metaclass=ABCMeta):#硬盘 21 @abstractmethod 22 def show_disk(self): 23 pass 24 25 #---------------------具体产品类--------------- 26 class Cpu_i3(CPU): 27 def show_cpu(self): 28 print('i3-cpu') 29 30 class Cpu_i5(CPU): 31 def show_cpu(self): 32 print('i5-cpu') 33 34 class Cpu_Amd(CPU): 35 def show_cpu(self): 36 print('Amd-cpu') 37 38 class Memory_san(Memory): 39 def show_memory(self): 40 print('san-memory') 41 42 class Memory_hd(Memory): 43 def show_memory(self): 44 print('hd-memory') 45 46 class Disk_kid(Disk): 47 def show_disk(self): 48 print('kid-disk') 49 class Disk_to(Disk): 50 def show_disk(self): 51 print('to-disk') 52 53 class Board_h(Board): 54 def show_board(self): 55 print('h-board') 56 class Board_b(Board): 57 def show_board(self): 58 print('b-board') 59 60 #---------------------抽象工厂类--------------- 61 class Compt(metaclass=ABCMeta):#主机 62 @abstractmethod 63 def make_cpu(self): 64 pass 65 @abstractmethod 66 def make_memory(self): 67 pass 68 @abstractmethod 69 def make_board(self): 70 pass 71 @abstractmethod 72 def make_disk(self): 73 pass 74 75 #---------------------具体工厂类--------------- 76 77 class Compt_i3(Compt): 78 def make_cpu(self): 79 return Cpu_i3() 80 81 def make_board(self): 82 return Board_b() 83 84 def make_memory(self): 85 return Memory_hd() 86 87 def make_disk(self): 88 return Disk_kid() 89 90 class Compt_i5(Compt): 91 def make_cpu(self): 92 return Cpu_i5() 93 94 def make_board(self): 95 return Board_h 96 97 def make_memory(self): 98 return Memory_hd() 99 100 def make_disk(self): 101 return Disk_kid() 102 103 #------客户端---手机配置类----- 104 105 class Computer: 106 def __init__(self,cpu,memory,board,disk):##组合模式 107 self.cpu=cpu 108 self.memory=memory 109 self.board=board 110 self.disk=disk 111 def show_info(self): 112 print('主机配置:') 113 self.cpu.show_cpu() 114 self.board.show_board() 115 self.memory.show_memory() 116 self.disk.show_disk() 117 #-----------生产手机函数------------ 118 def make_Computer(factory): 119 cpu=factory.make_cpu() 120 memory=factory.make_memory() 121 board=factory.make_board() 122 disk=factory.make_disk() 123 return Computer(cpu,memory,board,disk) 124 a=make_Computer(Compt_i3()) 125 a.show_info()
1 from abc import ABCMeta, abstractmethod 2 3 class Payment(metaclass=ABCMeta):#继承抽象类约束 接口 4 @abstractmethod 5 def pay(self,money): 6 pass 7 8 class Alipay(Payment): #产品类 9 def __init__(self,yeb=False): 10 self.yeb=yeb 11 def pay(self,money): 12 if self.yeb: 13 print('余额宝支付%s元'%money) 14 else: 15 print('支付宝支付%s元'%money) 16 17 class ApplePay(Payment): 18 def pay(self,money): 19 print('苹果支付%s元'%money) 20 class WeChatpay(Payment): 21 def pay(self,money): 22 print('微信支付%s元'%money) 23 24 25 class PaymentFactory(metaclass=ABCMeta):#抽象工厂 接口 26 @abstractmethod 27 def create_payment(self): 28 pass 29 30 class AlipayFactory(PaymentFactory):#具体产品工厂 31 def create_payment(self): 32 return Alipay() 33 class AlipayyebFactory(PaymentFactory):#具体产品工厂 34 def create_payment(self): 35 return Alipay(True) 36 37 AA=AlipayFactory() 38 AB=AlipayyebFactory() 39 a=AA.create_payment() 40 b=AB.create_payment() 41 a.pay(100) 42 b.pay(300)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Python学习日记(十) 生成器和迭代器 2019-08-13
- python学习-53 正则表达式 2019-08-13
- Python基础总结之初步认识---class类的继承(终)。第十六天 2019-08-13
- python爬虫学习之爬取超清唯美壁纸 2019-08-13
- python爬虫学习之用Python抢火车票的简单小程序 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash