The Fctory Pattern

 处理对象创建,客户端可以申请一个对象而不用知道对象被那个class创建。可以方便地解耦对象的使用和创建,有两种实现,工厂方法和抽象工厂。

Method(工厂方法):

 执行单独的函数,通过传参提供需要的对象信息。

class Person:

    def __init__(self):
self.name = None
self.gender = None def getName(self):
return self.name def getGender(self):
return self.gender class Male(Person): def __init__(self,name):
print("hello mr."+name) class Female(Person): def __init__(self,name):
print("Hello Miss."+name) class Factory: def getPerson(self,name,gender):
if gender == "M":
return Male(name)
elif gender == "F":
return Female(name) if __name__ == '__main__':
factory = Factory()
person = factory.getPerson("chetan","M")

1、The Fctory Pattern(工厂模式:解决对象创建问题)的更多相关文章

  1. 设计模式(四) Factory Pattern工厂模式

    核心: 实例化对象,实现创建者和调用者的分离 简单工厂模式 工厂方法模式 抽象工厂模式 面对对象设计的基本原则: ocp(open closed principle) 开闭原则:一个软件的实体应当对拓 ...

  2. JavaScript进阶系列03,通过硬编码、工厂模式、构造函数创建JavaScript对象

    本篇体验通过硬编码.工厂模式.构造函数来创建JavaScript对象. □ 通过硬编码创建JavaScript对象 当需要创建一个JavaScript对象时,我们可能这样写: var person = ...

  3. spring通过工厂模式解决页面耦合问题

    spring通过工厂模式解决页面耦合问题

  4. 抽象工厂模式(abstract)创建型模式

    (一)简单工厂模式? 现在的学习是面向对象面向接口的,但是执行时的操作需要实例化后的对象.随着我们需要的类的增加,我们就需要把这些共同的东西提取出来,放在一个抽象类中,让这些子类来继承抽象类.当我们调 ...

  5. Factory Pattern(工厂模式)

    1.工厂模式简介 工厂模式,专门负责将大量有共同接口的类实例化(用来生产对象).其定义为定义一个用于创建对象的接口,让子类决定实例化那一个类.工厂方法使一个类的实例化延迟到其子类. 工厂模式拥有以下几 ...

  6. 用工厂模式解决ASP.NET Core中依赖注入的一个烦恼

    这是最近在实际开发中遇到的一个问题,用 asp.net core 开发一个后端 web api ,根据指定的 key 清除 2 台 memcached 服务器上的缓存.背景是我们在进行 .net co ...

  7. 设计模式(一)工厂模式Factory(创建型)

    设计模式一 工厂模式Factory 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.可是在一些情况下, new操作符直接生成对象会带来一些问题. ...

  8. 设计模式(一)工厂模式Factory(创建类型)

    设计模式一 工厂模式Factory 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.可是在一些情况下, new操作符直接生成对象会带来一些问题. ...

  9. 设计模式(二)工厂模式Factory (创建型)

    工厂模式分为三种:简单工厂模式 (Simple Factory) .工厂方法模式(Factory Method).抽象工厂模式(Abstract Factory) //举例:发送邮件和短信的例子 /* ...

随机推荐

  1. CentOS 7.2配置Apache服务httpd(上)

    http://www.jb51.net/article/97434.htm 二.安装Apache httpd 安装httpd以配置Web服务器, HTTP使用80 / TCP ? 1 2 3 4 5 ...

  2. C++11中的to_string

    C++11之前,标准库没有提供数字类型转字符串的函数,需要借助sprintf.stringstream等,现在C++11提供了std::to_string函数,可以直接使用了: 点击(此处)折叠或打开 ...

  3. OpenCV4Android安装

    转:http://blog.csdn.net/gao_chun/article/details/49359535 1.下载及目录介绍 2.将 OpenCV引入 Android Studio 3.更新 ...

  4. 常见的MIME

    "css": "text/css", "gif": "image/gif", "html": &qu ...

  5. route -A inet6 增加下一跳 提示错误 SIOCADDRT: No route to host

    1.增加前路由表: 2. route -A inet6 增加下一跳 提示错误 SIOCADDRT: No route to host 3.删除已有的下一条路由表项: 4.再次尝试 route -A i ...

  6. route -A inet6查看路由 getnameinfo failed [UNKNOWN]解决方案

    route -A inet6查看路由 getnameinfo failed [UNKNOWN]解决方案, 结果如下: route -A inet6 -n 查看即可

  7. [转载]Java线程的两种实现方式

    转载:http://baijiahao.baidu.com/s?id=1602265641578157555&wfr=spider&for=pc 前言 线程是程序的一条执行线索,执行路 ...

  8. 卸载超级兔子后,word打不开(无法创建工作文件),VS2010也没法用(找不到CL.exe)。

    又折腾了一上午,昨天用优化大师和超级兔子整理了电脑,今天来到实验室,vs打开后报错,提示"找不到CL.exe,"(具体提示忘记了,就是找不到CL.exe),打开word2010也是 ...

  9. linux fdisk分区工具

    fdisk来自IBM老牌分区工具,支持绝大多数操作系统,几乎所有的linux的发行版本都装有disk,包括linux的resure模式下的依然能够使用. fdisk是一个机遇MBR的分区工具,所有如果 ...

  10. 反省在北京某S2B2C电商小型公司面试时掉链子的问题

    昨天,参与北京一家公司面试时,不知道为什么,错了很多题,这些题在该家公司之前已经被问很多次了,当天精神恍惚的没答上来或答错,被问到数据库优化和乐观锁的问题,首先我谈到了存储引擎底层的数据结构 B树/B ...