第八话-工厂方法模式



一直想不通你为什么那么狠心。今天用一下工厂方法模式吧。

一、什么是工厂方法模式?

所谓工厂方法模式即简单工厂模式的升级版。

工厂方法模式和简单工厂模式除了工厂类不同之外其它都一样。

二、有了简单工厂模式为什么还用工厂方法模式?

简单工厂模式似乎非常easy。正由于如此。他的工厂类违背了设计模式中的开放封闭原则。以第一话中的计算器为例。每次添加一个新的操作时都要更改工厂类里的switch分支。

这样就违背了面向对象设计的扩展而非改动-也既是之前学习的开放封闭原则。怎么解决问题呢?我们能够採用依赖倒转原则对其完好。

三、代码演示样例(在第一话计算器的基础上改动)

第一个变化:

把之前的OperationFactory.java改动例如以下

public interface OperationFactory {

public Operation createOperation();

}

第二个变化:

加入新的工厂类:AddFactory.java

public class AddFactory implements OperationFactory {

public Operation createOperation() {

// TODO Auto-generated method stub

return new AddOperation();

}

}

使用AddFactory给OperationFactory实例化

OperationFactory factory = new AddFactory();

Operation operation = factory.creaOperation();

注:此图来自《大话设计模式》

四、总结

因为有前面简单工厂模式和封闭开放原则的基础,此模式非常easy。一起学习,加油。

时间: 2024-10-05 06:50:39

第八话-工厂方法模式的相关文章

设计模式C#实现(八)——工厂方法模式和简单工厂

工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method使一个类的实例化延迟到其子类. 构成: 1.Product工厂方法创建的对象的接口 2.ConcreteProduct具体的产品,实现Product接口 3.Creator声明工厂方法,返回Product 4.ConcreteCreator实现/重写Creator的工厂方法,返回ConcreteProduct实例 UML类图: 实现 要生产的产品都实现一个接口 interface Product {

设计模式实战应用之五:工厂方法模式

工厂方法模式的定义        工厂方法模式的应用相当广泛. 工厂方法模式在 Java API 中的应用比比皆是:java.util.Collection 接口的 iterator 方法就是一个非常著名的工厂方法模式的演示样例:java.net.URLStreamHandlerFactory 的 createURLStreamHandler(String protocol)  也是工厂方法模式的一个非常经典的应用,URLStreamHandlerFactory 定义了一个用来创建 URLStr

iOS常用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)

1. 简单工厂模式 如何理解简单工厂,工厂方法, 抽象工厂三种设计模式? 简单工厂方法包含:父类拥有共同基础接口,具体子类实现子类特殊功能,工厂类根据参数区分创建不同子类实例.该场景对应的UML图如下所示: 代码结构如下 Animal 类 @interface Animal :NSObject @proterty(nonatomic,strong) NSString *name; -(void)laugh; @end Dog类 @interface Dog:Animal @end Cat类 @i

设计模式之第1章-工厂方法模式(Java实现)

设计模式之第1章-工厂方法模式(Java实现) “我先来”,“不,老公,我先!”.远远的就听到几个人,哦不,是工厂方法模式和抽象工厂模式俩小夫妻在争吵,尼妹,又不是吃东西,谁先来不都一样(吃货的世界~).“抽象工厂模式,赶紧的自我介绍,工厂方法模式,你身为男人,要懂得绅士风度,lady first懂不懂,稍后再来,急什么.”(画外音:鱼哥,这是我家祖传的小吃,还有我爹的好酒blablabla),“哎呀,那个抽象工厂模式,阿姨喊你回家吃饭了.”“哦,我去去就回,等我啊.”工厂方法,赶紧的.“等等,

NET设计模式 第二部分 创建型模式(4):工厂方法模式(Factory Method)

工厂方法模式(Factory Method) ——.NET设计模式系列之五 Terrylee,2004年1月2日 概述 在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口.如何应对这种变化?提供一种封装机制来隔离出“这个易变对象”的变化,从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变?这就是要说的Factory Method模式了. 意图 定义一个用户创建对象的接口,让子类决定实例化哪一个类.Facto

01-曹操献刀:工厂方法模式

2.1.模式背景故事 曹操从王允处借七星宝刀刺杀董卓 2.2.模式定义 所谓工厂方法模式(Factory Method Pattern),就是定义一个创建产品对象的工厂接口,让子类决定实例化哪一种实例对象,也就是将实际创建实例对象的工作推迟到子类当中,核心工厂类不再负责具体产品的创建. 工厂方法模式是对简单工厂模式进行了抽象.如此一来核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品.工厂方法模

大话设计模式之工厂方法模式读后感

引言:让我们重温经典,致敬经典 工厂方法模式:定义一个用于创建对象的接口,让子类来决定实例化哪一个类,工厂方法使一个类的实例化延迟到了子类. UML图: 1 package com.dzf.designtest; 2 3 /** 4 * <desc> 5 * 工厂方法:定义一个创建对象的接口,让子类来决定实例化哪一个类,工厂方法使一个类的实例延迟到子类. 6 * </desc> 7 * @author dingzf 8 * @date 2018/4/1 9 * @time 21:4

设计模式之—2.工厂方法模式

1.工厂方法模式定义 定义一个用于创建对象的接口,让子类决定具体实例话哪一个类. 2.通用实现方式 工厂方式通用实现方式类图如下: 其中Product定义了产品的共性,是对事物的抽象,Creator为抽象创建类,即抽象工厂,具体如何创建实例由实现类决定.代码如下所示: Product类: public abstract class Product { /** * 产品名称 */ private String name = ""; /** * 产品价格 */ private String

具体聊一聊简单工厂模式、工厂方法模式和抽象工厂模式

1.工厂模式简介 In class-based programming, the factory method pattern is a creational pattern that uses factory methods to deal with the problem of creating objects without having to specify the exact class of the object that will be created. ( 在基于类的编程中,工厂