设计模式笔记6:工厂方法模式

1.1  定义

  简单工厂增加计算功能需要增加case语句修改工厂类。违背了开放封闭原则。

  工厂方法模式:定义一个创建对象的接口,让子类决定实例化哪一个类。

  

1.2  类图

  工厂模式:抽象出一个工厂父类,每一个功能做为一个子工厂。这时候要增加一个计算功能,要在计算类增加一个功能类,并且增加对应的工厂类。这样避免了改变工厂类,而是通过扩展的方法来新增功能。

时间: 2024-08-18 12:25:12

设计模式笔记6:工厂方法模式的相关文章

易学设计模式看书笔记(3) - 工厂方法模式

二.工厂方法模式 1.动物管理系统的例子 首先,抽象的动物类和具体的动物实现类: public interface Animal{ public void eat(); } public class Tiger implements Animal { public void eat(){ sysout.out.println("老虎会吃"); }; public void run(){ sysout.out.println("老虎会跑"); }; } public

设计模式那点事读书笔记(1)----工厂方法模式

工厂方法模式: 定义一个创建产品对象的工厂接口,让子类决定实例化哪种实例对象,将实际创建实例对象的工作推迟到子类当中,核心工厂类不再负责具体产品创建. 解决什么问题: 当子类型可能会有很多,以后需要不断添加不同子类的实现. 当一个系统尚在框架设计阶段,还不知道将来需要实例化那些具体类时. 系统设计之初不需要具体对象的概念. UML: 代码结构: 代码: 定义抽象产品: package com.demo.factory.model; /** * 定义抽象商品 */ public abstract

菜鸟学设计模式系列笔记之工厂方法模式

工厂方法模式(Factory Method): Alias :virtual constructory 虚构造器 Intent: 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method使一个类的实例化延迟到其子类. Motivation:一个框架使用抽象类定义和管理对象之间的关系.这个框架负责去创建这些对象. 工厂方法模式是类的创建模式,又叫做虚拟构造子模式(Virtual Constructor)或者多态性(Polymorphic Factory)工厂模式 工厂方法

大话设计模式读书笔记7——工厂方法模式

工厂方法模式 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法是一个类的实例化延迟到其子类. 工厂方法模式UML结构图 工厂方法模式结构代码 /// <summary> /// 声明'Product' 抽象类 /// </summary> abstract class Product { } /// <summary> /// 声明 'ConcreteProductA' 类,继承Product /// <

大话设计模式C++版——工厂方法模式

工厂方法模式是以简单工厂模式为基础的,如果未了解简单工厂模式的同学可先浏览<大话设计模式C++版--简单工厂模式>.在简单工厂模式中,提到过简单工厂模式的缺陷,即违背了开发-封闭原则,其主要原因是由于switch的判断结构的使用,使修改或添加新的对象时需要改动简单工厂类的代码,不符合开放-封闭原则,那么工厂方法模式会在那方面有所改进呢?我们仍以简单工厂模式中加减法计算器为例. 1.保持简单工厂模式的 IOperation 接口和实现对象(COperation_Add 和 COperation_

设计模式C++实现——工厂方法模式

模式定义: 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子类. 模式结构: Creator是一个类,它实现了全部操纵产品的方法,但不实现工厂方法. Creator的全部子类都必须实现工厂方法(factoryMethod()),以实际制造出产品. 全部的产品必须实现Product基类.这样一来使用这些产品的类就能够引用这个基类,而不是派生类. 举例: 披萨店希望可以开一些加盟店. 经营者希望确保加盟店运营的质量,所以希望这些店都使用能经过实践

23种设计模式[2]:工厂方法模式

一.简单工厂模式(静态工厂方法,不属于23种GOF设计模式之一) 定义:定义一个用于创建产品对象的方法,由该工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例. 类型:创建类模式 public interface SmsService { void sendSms(); } public class MontnetsService implements SmsService { @Override public void sendSms() { Syste

设计模式(五)_工厂方法模式

今天主要讲解的是工厂方法模式.内容参考自java_my_life 博主的博客.但是拒绝粘贴复制,全部手打 工厂方法模式是类的创建模式.工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作,推迟到子类中. 案例说明 大家很多时候都做过导出功能,比如一个系统,需要导出的格式包括html.pdf等.但是财务系统导出的格式和其他普通的格式又不一样, 此时如果用我们上篇学到的简单工厂模式,势必会让工厂类很繁琐,各种if判断.日后增加导出的格式,又会对工厂类进行增加逻辑编写. 此时我们采用 工

设计模式之:工厂方法模式

模式的定义与特点 工厂方法(FactoryMethod)模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中.这满足创建型模式中所要求的“创建与使用相分离”的特点. 我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”.如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”,它不属于 GoF 的 23 种经典设计模式,它的缺点是增加新产品时会违背“开闭原则”. 本节介绍的“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以

设计模式三:工厂方法模式

疑惑解答: 1.interface接口不能够实例化(new),但是可以定义引用来指向继承该接口的实体类: 如: interface animal{ void eat(); } class Cat implements animal{ public void eat(){ System.out.println("The cat eat!"); } } animal an = new Cat(); 一.什么是工厂方法模式 1.是简单工厂模式的进一步抽象: 2.定义一个创建产品对象的工厂接口