简单工厂模式

简单工厂模式

ⅰ亾dé卋堺 提交于 2020-02-07 17:58:00
简单工厂模式的目的主要是用来创建对象。工厂是对对象创建过程的封装,不需要使用者自己去创建对象了,工厂模式可以通过现实中的工厂来理解,比如我要一部车,你可以自己做(但是你不怎么想),也可以交给工厂给你做。工厂可以把这个事情做好,然后给你想要的车,前提是你要告诉工厂具体的产品名称,必要的参数等等。 如汽车厂(CarFactory)可以生产汽车(Car),包括就有宝马、奔驰、大众等等;通过对这些车抽象至都是“车”(Car)这个抽象的模型,这个汽车工厂当然可以制作很多种类,具体多少种得看当前这个车概念下有多少种车了(继承“车”这个模型的类的种类),当然也不一定全要生产(看具体这个工厂提供哪些了,CarFactory中能实例化多少种类)。 当我们想要一辆宝马,我们告诉工厂给我一辆宝马车,然后工厂会调用宝马车制造流水线制造它并提供给你,加入你说给我一辆自行车,不好意思,我们不生产(其实是自行车没有继承Car罢了)。具体代码如下所示(C#): /* *--------------------------------- *| All rights reserved. *| author: lizhanping *| version:1.0 *| File: SimpleFactory.cs *| Summary: *| Date: 2019/3/8 15:29:44 *--------------

设计模式——简单工厂、工厂方法、抽象工厂

会有一股神秘感。 提交于 2020-02-07 17:57:05
简单工厂模式 /** * 汽车形状接口 */ public interface Car { /** * 显示汽车品牌方法 */ void showBrand(); } 定义一个统一汽车接口。 /** * 奔驰汽车 */ public class BENZCar implements Car{ @Override public void showBrand() { System.out.println("奔驰"); } } 定义不同品牌汽车去实现统接口。 /** * 宝马汽车 */ public class BMWCar implements Car { @Override public void showBrand() { System.out.println("宝马"); } } 定义一个工厂去生产汽车。 /** * 汽车工厂 */ public class CarFactory { /** * 根据汽车型号生产汽车 * * @param brand * @return */ public Car getCar(String brand) { if ("BENZ".equals(brand)) { //生产奔驰 return new BENZCar(); } if ("BMW".equals(brand)) { //生产宝马 return new BMWCar(); }

设计模式之简单工厂模式

て烟熏妆下的殇ゞ 提交于 2020-02-06 06:08:00
1.介绍 1)简单工厂模式是属于创建型模式,是工厂模式的一种。简 单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例 。简单工厂模式是工厂模式家族中最简单实用的模式 2)简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码) 3)在软件开发中,当我们会用到大量的创建某种、某类或某批对象时,就会使用到工厂模式 2.实例 实例需求 机器人生产的项目:要便于机器人种类的扩展,要便于维护 机器人的种类分为:机器人一代,机器人二代等 完成机器人的生产需求 简单工厂模式代码 Robot 抽象类,所有机器人生产的步骤 public abstract class Robot { private String name ; public Robot ( String name ) { this . name = name ; } /** * 准备材料 */ public abstract void ready ( ) ; public void create ( ) { ready ( ) ; head ( ) ; body ( ) ; hand ( ) ; foot ( ) ; } protected void head ( ) { System . out . println ( name + "头部" ) ; } protected void body ( ) {

简单工厂模式

只谈情不闲聊 提交于 2020-02-04 10:09:11
举例: $('div') React.createElement 结构: 简单工厂模式包含如下角色: Factory:工厂角色 工厂角色负责实现创建所有实例的内部逻辑 Product:抽象产品角色 抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口 ConcreteProduct:具体产品角色 具体产品角色是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。 概念: 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 优点: 工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品;简单工厂模式通过这种做法实现了对责任的分割,它提供了专门的工厂类用于创建对象。 客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量。 通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。 缺点: 由于工厂类集中了所有产品创建逻辑

Java之简单工厂设计模式

醉酒当歌 提交于 2020-02-02 00:33:41
一、简单工厂设计模式 概述: 定义一个具体的工厂类负责创建各个类的实例。 演示: ①定义一个抽象父类动物类 ②定义几个子类 ③定义工厂类 ④Main方法中直接调用各个子类 优点: 客户端不需要再负责对象的创建,从而明确了各个类的职责。 缺点: 这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断地修改工厂类,不利于后期维护。 二、工厂方法模式 概述: 工厂方法模式中抽象工厂类负责定义创建对象接口,具体对象的创建工作由继承抽象工厂的具体类实现。 演示: ①定义一个动物父类,定义一个狗类,定义一个猫类,同上,略 ②定义一个工厂接口,并定义一个生产动物的抽象方法 ③定义猫和狗的生产对象工厂 ④Main方法演示 优点: 客户端不需要再负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要添加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性。 缺点: 需要额外的编写代码,增加工作量。 来源: CSDN 作者: 一名小白的进阶之路 链接: https://blog.csdn.net/qq_40275740/article/details/104131207

常见的设计模式笔记(简单工厂模式、单例模式)

情到浓时终转凉″ 提交于 2020-01-31 02:00:43
原文链接:https://www.jianshu.com/p/e55fbddc071c 设计模式笔记 简单工厂模式 优点 将创建实例的工作与使用实例的工作分开,使用者不必关心类对象如何创建,实现了解耦; 把初始化实例时的工作放到工厂里进行,使代码更容易维护。 更符合面向对象的原则 & 面向接口编程,而不是面向实现编程。 缺点 工厂类集中了所有实例(产品)的创建逻辑,一旦这个工厂不能正常工作,整个系统都会受到影响; 违背“开放 - 关闭原则”,一旦添加新产品就不得不修改工厂类的逻辑,这样就会造成工厂逻辑过于复杂。 简单工厂模式由于使用了静态工厂方法,静态方法不能被继承和重写,会造成工厂角色无法形成基于继承的等级结构。 实例步骤: 创建抽象产品类 & 定义具体产品的公共接口; abstract class Product { public abstract void Show(); } 创建具体产品类(继承抽象产品类) & 定义生产的具体产品; class ProductA extends Product{ @Override public void Show() { System.out.println("生产出了产品A"); } } class ProductB extends Product{ @Override public void Show() { System.out

设计模式—简单工厂模式

时间秒杀一切 提交于 2020-01-28 05:14:24
今天,我们来认识一下简单工厂模式。 首先,什么是简单工厂模式呢,简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 简单工厂模式中包含三个角色:工厂角色、抽象角色、具体产品角色,我们来了解一下这些角色及其职责。 工厂角色:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以直接被外界调用,创建所需产品; 抽象角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所有的公共接口; 具体产品角色:简单工厂模式所创建的具体实例对象。 我们现在来看看代码是怎么实现的吧。 首先,创建一个父类Fruit,申明一个公用方法 public interface Fruit { public void get(); } 然后创建两个具体的实例对象,实现父类 public class Apple implements Fruit{ /** * 采集 */ public void get(){ System.out.println("采集苹果"); } } public class Banana implements Fruit{ /** * 采集 */ public void get(){ System.out.println("采集香蕉"); } } 接下来,我们就要创建工厂了 public class

简单工厂模式

余生颓废 提交于 2020-01-26 05:35:58
今天我给大家分享的是设计模式中的一种重要的模式—— 简单工厂模式 。 基本简介: 简单工厂模式是工厂模式种的一种,从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是 工厂模式 家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 实现方式: 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 工厂角色: 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。 抽象产品角色 简单工厂模式简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 优缺点 优点 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个 软件体系结构 的优化。 缺点 由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中

设计模式:抽象工厂模式(Abstract Factory)

我怕爱的太早我们不能终老 提交于 2020-01-26 05:27:04
在设计原则中有这样一句话“我们应该针对接口编程,而不是正对实现编程”。但是我们还是在一直使用new关键字来创建一个对象,这不就是在针对实现编程么? 针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。入股代码是针对接口而写,那么可以通过多态,它可以与任何新类实现该接口。但是,当代码使用一大堆的具体类时,等于是自找麻烦,因为一旦加入新的具体类,就必须要改变代码。在这里我们希望能够调用一个简单的方法,我传递一个参数过去,就可以返回给我一个相应的具体对象,这个时候我们就可以使用简单工厂模式。 一、基本定义 简单工厂模式又称之为静态工厂方法,属于创建型模式。在简单工厂模式中,可以根据传递的参数不同,返回不同类的实例。简单工厂模式定义了一个类,这个类专门用于创建其他类的实例,这些被创建的类都有一个共同的父类。 二、模式结构 模式结构图如下: 模式分析: Factory:工厂角色。专门用于创建实例类的工厂,提供一个方法,该方法根据传递的参数不同返回不同类的具体实例。 Product:抽象产品角色。为所有产品的父类。 ConcreteProduct:具体的产品角色。 简单工厂模式将对象的创建和对象本身业务处理分离了,可以降低系统的耦合度,使得两者修改起来都相对容易些。当以后实现改变时,只需要修改工厂类即可。 三、简单工厂模式实现 模式场景:在一个披萨店中,要根据不同客户的口味,生产不同的披萨

设计模式 - 简单工厂模式

别说谁变了你拦得住时间么 提交于 2020-01-26 05:26:32
1、定义   简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 2、使用场景    a、工厂类负责创建的对象比较少;   b、客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;   c、由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。 3、角色及职责   工厂( Creator )角色     简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。   抽象产品( Product )角色     简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。   具体产品( Concrete Product )角色     是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。 4、UML类图 5、代码 5.1 抽象产品角色Car接口 /** * 汽车接口 * * @since 2016-04-27 * @version 1.0.0 * */ public interface Car { /** * 驾驶汽车 */ public void drive(); } 5.2 具体产品角色Car实现类 /** * 汽车接口实现类<br> * 奇瑞汽车 * *