雷锋依然在人间——工厂方法模式

工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

工厂方法模式(Factory Method)结构图

简单工厂VS工厂方法

  简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。

计算器的简单工厂模式

  工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。你想要添加功能,本来是改工厂类,而现在是修改客户端!

计算器的工厂方法模式

  如果要在简单工厂模式下添加一个‘求M数的N次方’的功能,我们就一定需要给运算工厂类的方法里加‘Case’的分支条件的,修改原有的类?这个不是好方法,这就等于说,我们不断对扩展开放了,对修改也开放了,这样就违背了开放-封闭原则Open-Closed principle,OCP)。

  工厂方法克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点

时间: 2024-10-05 23:27:21

雷锋依然在人间——工厂方法模式的相关文章

雷锋依然在人间-工厂模式

简单(静态)工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例. 该模式中包含的角色及其职责 工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑.工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象. 抽象产品(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口. 具体产品(Concrete Product)角色 是简单工厂模式的创建目标,所有创建的对象

《大话设计模式》——读后感 (5)雷锋依然在人间?——工厂方法模式

什么是工厂方法模式: 工厂方法UML结构图: 从图中我获取以下信息: 1. Product是个接口,而Creator是个抽象类(我还是试试接口) 2.ConcreateProduct和ConcreteCreator是有依赖关系的,后者依赖前者 接下来看看简单工厂模式中例子用工厂模式实现的设计图: 根据设计图.直接上代码: 运算接口: package com.sjmx.slpFactory; public interface Operation { public double getResult(

大话设计模式-第八章-工厂方法模式

一.UML图 二.包含的角色 (1)抽象工厂 (2)具体工厂 (3)抽象产品 (4)具体产品 三.优势 (1)工厂方法模式是对简单工厂模式的稍微的改进.工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际工作推迟到子类中. (2)与简单工厂模式相比,制造产品的工厂类不再 只有一个,而是每种具体产品类都对应一个生产它的具体工厂类.而这些具体工厂类的共同特征再被提取出来形成一个抽象产品类,这些具体产品类都继承自这个抽象产品类. (3)当需要增加一种产品的时候,需要做的是:增加一种继承自抽象产品

《大话设计模式》ruby版代码:工厂方法模式

一,先看看简单工厂模式 简单工厂模式的优点:工厂类中包含了必要的逻辑判断,根据客户端的选择动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖. 简单工厂模式的缺点:增加功能的时候,就需要增加case的条件分支,也就是要修改工厂类,违背了“开放-封闭原则”. 2,工厂方法模式: # -*- encoding: utf-8 -*- #运算类 class Operation attr_accessor :number_a,:number_b def initialize(number_a =

Python设计模式——工厂方法模式(FactoryMethod)

需求:有一个学雷锋活动,有买米和扫地两个内容,参与的人有大学生和社区志愿者,他们各自的方法不一样. 如果用简单工厂模式实现: #encoding=utf-8 __author__ = '[email protected]' class LeiFeng(): def buy_rice(self): pass def sweep(self): pass class Student(LeiFeng): def buy_rice(self): print '大学生帮你买米' def sweep(self

java设计模式 -------- 创建模式 之 工厂方法模式

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 上节的简单工厂模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到工厂方法模式,创建一个工厂接口和创建多个工厂实现类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码. 依然用上节的例子,四则运算,采用工厂方法模式,各部分的关系如下图: 工厂方法

大话设计模式C++实现-第8章-工厂方法模式

一.UML图 二.概念 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法是一个类的实例化延迟到其子类. 三.包括的角色 (1)抽象工厂 (2)详细工厂 (3)抽象产品 (4)详细产品 四.优势 (1)工厂方法模式是对简单工厂模式的略微的改进.工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际工作推迟到子类中. (2)与简单工厂模式相比,制造产品的工厂类不再 仅仅有一个.而是每种详细产品类都相应一个生产它的详细工厂类. 而这些详细

(四) 工厂方法模式

转载: http://www.cnblogs.com/zuoxiaolong/p/pattern5.html 本章我们继续讨论新的设计模式,工厂方式模式,在这之前,LZ决定先给出引自其它地方的标准定义以及类图.  定义:工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色

工厂模式三部曲:工厂方法模式

前言 紧接着上一篇文章开始写,这是本系列中的第二篇文章了,这篇文章主要讲一下工厂方法模式.在最后一篇抽象工厂模式的文章中,将会对这三篇文章进行一次总结. 这篇文章中并没有给出反射机制实现的代码,主要是因为工厂方法模式就是为了解决简单工厂模式的一些缺点,然而使用了反射机制的简单工厂模式已经不具备这些缺点,所以就不需要这篇文章中讲的内容了.这篇文章主要还是单一从设计模式的角度来讲一下这个模式,带大家认识一下这个设计模式. 本人理解可能不够深刻,这一系列文章中存在的问题,欢迎大家提出,谢谢! 什么是工