在设计原则中有这样一句话“我们应该针对接口编程,而不是正对实现编程”。但是我们还是在一直使用new关键字来创建一个对象,这不就是在针对实现编程么? 针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。入股代码是针对接口而写,那么可以通过多态,它可以与任何新类实现 ...
一 问题 在前一章 设计模式读书笔记 简单工厂模式 中通过披萨的实例介绍了简单工厂模式。在披萨实例中,如果我想根据地域的不同生产出不同口味的披萨,如纽约口味披萨,芝加哥口味披萨。如果利用简单工厂模式,我们需要两个不同的工厂,NYPizzaFactory ChicagoPizzaFactory。在该地域中有很多的披萨店,他们并不想依照总店的制作流程来生成披萨,而是希望采用他们自己的制作流程。这个时 ...
2013-05-26 00:09 1 4194 推荐指数:
在设计原则中有这样一句话“我们应该针对接口编程,而不是正对实现编程”。但是我们还是在一直使用new关键字来创建一个对象,这不就是在针对实现编程么? 针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。入股代码是针对接口而写,那么可以通过多态,它可以与任何新类实现 ...
在工厂方法模式中,我们使用一个工厂创建一个产品,也就是说一个具体的工厂对应一个具体的产品。但是有时候我们需要一个工厂能够提供多个产品对象,而不是单一的对象,这个时候我们就需要使用抽象工厂模式。 在讲解抽象工厂模式之前,我们需要厘清两个概念: 产品 ...
1. 概述: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。 2. 模式中的角色 2.1 抽象工厂(Creator):这个抽象类(或接口)声明一个创建对象的工厂方法,用来返回一个Product类型的对象。 2.2 具体工厂 ...
1.工厂方法模式定义 2.通用实现方式 工厂方式通用实现方式类图如下: 其中Product定义了产品的共性,是对事物的抽象,Creator为抽象创建类,即抽象工厂,具体如何创建实例由实现类决定。代码如下所示: Product类: Creator类: 具体的实现类 ...
之前写了 设计模式系列目录 今天说一下工厂方法模式: 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类 所谓的决定并不是批模式允许子类本身在运行时做决定,而是指在编写创建者类时,不需知道创建的产品是哪一下,选择了使用 哪个子类,就决定了实际创建 ...
使用频率:★★★★★ 一、什么是工厂方法 具体的工厂对象负责生产具体的产品对象; 二、补充说明 符合开放--封闭"原则(OCP),新增产品时,只需新增工厂的实现类、产品的实现类,不修改原来的代码; 属于23种GOF设计模式中的一种; 三、角色 抽象工厂 具体工厂 抽象 ...
目录 1. 简介 2. 示例1-计算器重构 2.1 背景说明 2.2 代码重构 2.3 程序类图 3. 示例2-模拟多功能日记记 ...
工厂模式属于创建型设计模式,它提供了一种创建对象的最佳方式。 定义:定义了一个创建产品对象的工厂接口,将实际创建工作推迟到子类工厂当中。 问题描述:简单工厂模式中,只要添加新的产品类,就得去修改工厂类,这样做势必违反了开闭原则。 解决方案:新增抽象工厂类,让抽象产品对应抽象 ...