做本地房产网站,国外做微课的网站,招远做网站,做网站要用到ps吗一、简单工厂模式
什么是简单工厂模式#xff1f; 专门定义一个类来负责创建其他类的实例#xff0c;根据参数的不同创建不同类的实例#xff0c;被创建的实例通常具有共同的父类#xff0c;这个模式叫简单工厂模式#xff08;Simple Factory Pattern#xff09;。 专门定义一个类来负责创建其他类的实例根据参数的不同创建不同类的实例被创建的实例通常具有共同的父类这个模式叫简单工厂模式Simple Factory Pattern。 简单工厂模式
from abc import ABCMeta, abstractmethodclass My_abc(metaclassABCMeta):abstractmethoddef test(self):passclass My_class1(My_abc):def test(self):return My_class1_testclass My_class2(My_abc):def test(self):return My_class2_testclass fac:staticmethoddef fac_func(param):if param 1:return My_class1()elif param 2:return My_class2()else:raise 参数错误if __name__ __main__:a1 fac.fac_func(1)a2 fac.fac_func(2)print(a1.test())print(a2.test())
二、工厂方法模式 由于简单工厂模式不符合开闭原则所以在简单工厂模式之上升级出了工厂方法模式。
什么是工厂方法模式 定义一个创建对象实例化对象的接口让子类来决定创建哪个类的实例。工厂方法使一个类的实例化延迟到其子类。 工厂方法模式from abc import ABCMeta, abstractmethodclass EleCar(metaclassABCMeta):新能源车产品的基类abstractmethoddef run(self, money):passclass MiCar(EleCar):具体的产品def run(self):print(小米启动!)class TslCar(EleCar):具体的产品def run(self):print(特斯拉启动!)class CreateCar(metaclassABCMeta):抽象出来的工厂基类abstractmethoddef create(self):passclass MiFactory(CreateCar):负责创建具体产品的工厂子类def create(self):return MiCar()class TslFactory(CreateCar):负责创建具体产品的工厂子类def create(self):return TslCar()pf MiFactory()
p pf.create()
p.run()三、抽象工厂模式
不太懂!
from abc import ABCMeta, abstractmethod# 手机壳
class Shell(metaclassABCMeta):abstractmethoddef select_shell(self):pass# CPU处理器
class CPU(metaclassABCMeta):abstractmethoddef select_cpu(self):pass# OS系统
class OS(metaclassABCMeta):abstractmethoddef select_os(self):passclass MiShell(Shell):def select_shell(self):print(小米手机壳)class IPhoneShell(Shell):def select_shell(self):print(苹果手机壳)class MiCPU(CPU):def select_cpu(self):print(小米CPU)class IPhoneCPU(CPU):def select_cpu(self):print(苹果CPU)class MiOS(OS):def select_os(self):print(小米系统)class IPhoneOS(OS):def select_os(self):print(苹果系统)class CreatePhone(metaclassABCMeta):abstractmethoddef make_shell(self):passabstractmethoddef make_cpu(self):passabstractmethoddef make_os(self):passclass CreateMi(CreatePhone):def make_shell(self):return MiShell()def make_cpu(self):return MiCPU()def make_os(self):return MiOS()class CreateIPhone(CreatePhone):def make_shell(self):return IPhoneShell()def make_cpu(self):return IPhoneCPU()def make_os(self):return IPhoneOS()class Phone:def __init__(self, shell, cpu, os):self.shell shellself.cpu cpuself.os osdef show_info(self):print(手机信息)self.shell.select_shell()self.cpu.select_cpu()self.os.select_os()def make_phone(factory):shell factory.make_shell()cpu factory.make_cpu()os factory.make_os()return Phone(shell, cpu, os)phone_type CreateMi()
phone make_phone(phone_type)
phone.show_info()