一:工厂模式实现 设计模式是面向对象语言特有的内容,是我们在面临某一类问题时候固定的做法,设计 模式有很多种,比较流行的是:GOF(Goup Of Four)23 种设计模式。 工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进 行统一的管理和控制。【操作】#工厂模式实现class CarFactory:def creatCar(self,brand):if brand == ‘奔驰‘:return Benz()elif brand == ‘宝马‘:return BMW()elif bra...
抽象工厂模式 内容:定义一个工厂类接口,让工厂子类来创建一系列相关或相互依赖的对象。例:生产一部手机,需要手机壳、CPU、操作系统三类对象进行组装,其中每类对象都有不同的种类。对每个具体工厂,分别生产一部手机所需要的三个对象。相比工厂方法模式,抽象工厂模式中的每个具体工厂都生产一套产品。角色:抽象工厂角色(Creator)具体工厂角色(Concrete Creator)抽象产品角色(Product)具体产品角色(Concrete Product)...
class CarFactory:'''python实现单例工厂模式'''__obj = None__flg_init = Truedef __new__(cls, *args, **kwargs):if cls.__obj is None:cls.__obj = object.__new__(CarFactory)return cls.__objdef __init__(self):if CarFactory.__flg_init:print('工厂产生了')CarFactory.__flg_init = Falsedef creatCar(self, car_name):if car_name == 'Benz':car = Benz()elif car_name == 'BMW':car = BMW()else:car = BYD()return carcl...
源码前戏
承接上一篇(建造者模式)故事,话说,女娲正在造人,但是效率低下(毕竟神仙也只有一双手)
于是伟大的女娲think了一下,何不建造一个造人工厂,
说干就干,上源码:
造人工厂v1.0 ----简单工厂"""简单工厂模式"""
class MakeWoman:# 制造女人"""制造女人的具体实现"""def __init__(self, name):print("制造女人:" + name)...class MakeMan:def __init__(self, name):print("制造男人:" + name)class KeyError(Excepti...
代理模式
Proxy模式是一种常用的设计模式,它主要用来通过一个对象(比如B)给一个对象(比如A) 提供'代理'的方式方式访问。比如一个对象不方便直接引用,代理就在这个对象和访问者之间做了中介
你先设想:一个对象提供rgb三种颜色值,我想获得一个对象的rgb三种颜色,但是我不想让你获得蓝色属性,怎么办?class Proxy(object):def __init__(self, subject):self.__subject = subject# 代理其实本质上就是属性的委托def __getattr__(...
工厂:
表示负责创建其他类型对象的类
优点:
1、松耦合,对象的创建可以独立于类的实现
2、客户端无需了解创建对象的类,但是可以使用它来创建对象。只需要知道需要传递的接口,方法和参数
3、工厂中添加其他类来创建其他类型的对象,无需更改客户端代码
4、工厂可以重用现有对象
分类
1、简单工厂模式
允许接口创建对象,但不会暴露对象的创建逻辑
2、工厂方法模式
允许接口创建对象,但使用哪个类来创建对象,则交由子类决定
3、...
简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类.
例:
使用Python设计一个控制台计算器,要求输入两个数和运算符号,得到运算结果。
1. 初学者写法
class Operation(object):def __init__(self):passdef conver_strNumber(self, strNumber):'''将字符串格式的数字,转化成对应格式的数字:param strNumber::return:'''if '.' not in strNumber:return int(s...
python面向对象编程入门,我们需要不断学习进步"""抽象工厂模式的实现"""import randomclass PetShop:"""宠物商店"""def __init__(self, animal_factory=None):"""宠物工厂是我们的抽象工厂。我们可以随意设置。""" self.pet_factory = animal_factorydef show_pet(self):"""使用抽象工厂创建并显示一个宠物"""pet = self.pet_factory.get_pet()print("我们有一个可爱的 {}".format(pet))print("它说 {}".format(pet.speak()))prin...
看了下函数本身的doc 代码如下:getattr(object, name[, default]) -> value
Get a named attribute from an object; getattr(x, y) is equivalent to x.y. When a default argument is given, it is returned when the attribute doesnt exist; without it, an exception is raised in that case.
解释的很抽象 告诉我这个函数的作用相当于是
object.name
试了一下getattr(object,name)确实和object.name是一样的功能.只不过这里可...
设计模式之简单工厂模式:
模式定义:
定义一个工厂类,它可以根据参数的不同返回不同类的实例,在简单工厂模式中用于被创建实例 的方法通常为静态(static)方法,因此简单工厂模式又被成为静态工厂方法(Static Factory Method)。需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无需知道其实现过程
模式结构:
简单工厂模式包含如下角色:Factory:工厂角色Product:抽象产品角色ConcreteProduct:具体产品角色
简单...
工厂模式是一个在软件开发中用来创建对象的设计模式。
工厂模式包涵一个超类。这个超类提供一个抽象化的接口来创建一个特定类型的对象,而不是决定哪个对象可以被创建。
为了实现此方法,需要创建一个工厂类创建并返回。
当程序运行输入一个“类型”的时候,需要创建于此相应的对象。这就用到了工厂模式。在如此情形中,实现代码基于工厂模式,可以达到可扩展,可维护的代码。当增加一个新的类型,不在需要修改已存在的类,只增加能...
#基础
import abc
class OperationBase(metaclass=abc.ABCMeta):@abc.abstractmethoddef __init__(self, num_1, num_2):self.__num1 = num_1self.__num2 = num_2@propertydef num_1(self):return self.__num1@propertydef num_2(self):return self.__num2@abc.abstractmethoddef calculate(self):pass#加法类from operation.operation_base import OperationBase
class OperationAdd(OperationBase):def __init__(self, num1, num2...
工厂模式:
类似将生产环节重新创建了一个类或者函数,工厂函数和工厂类对具体的生产环节进行了封装,这样有利于代码的后续扩展,将功能划分的更具体。
引包方式:
1、import + 需要引入的包
2、from + 需要引的包 import MyException
两种方法都可以