“创建型模式”的应用

基于创建型模式的“迷宫”构造 本文在GOF《设计模式》一书“创建型模式”一章的例子和模式的基础上,将各个创建型模式有机的结合在一起。实现了“迷宫”构造过程的封装,增强了构造不同迷宫的可扩展性。 创建型模式:抽象工厂工厂方法生成器原型单件 其中,抽象工厂是由工厂方法组成的,是一组相互关联的工厂方法的集合。 “迷宫”构造类图:     从类图中可以看出各个模式直接 阅读详情
创建型模式的工作原理
创建型模式隐藏了类的实例的创建细节,通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。 创建型模式分为:工厂方法模式(Factory Method)、抽象工厂模式

(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)、单例模式(Singleton)等五类。


本文以Factory Method 模式为例,阐述工厂方法模式的工作原理:

工厂方法模式(Factory Method Pattern):也叫虚拟构造器(Virtual Constructor)模式或者多
态工厂(Polymorphic Factory)模式,在工厂方法模式中,工厂父类负责定义创建产品对象的
公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作
延迟到工厂子类中完成。它的 UML 类图如下:

工厂方法模式包含如下角色:
 Product:抽象产品
 ConcreteProduct:具体产品
 Creator:抽象工厂
 Concrete Creator:具体工厂

Factory Method 模式的特点为当系统扩展需要添加新的产品对象时,仅仅需要添加一个 具体产品对象以及一个具体工厂对象,原有工厂对象不需要进行任何修改,也不需要修改客户端,很好地符合了“开闭原则” 。

应用实例:

用 Factory Method 模式设计一个饮料工厂的模拟程序:要求为每种品牌的饮料提供一个子工厂,如:芒果汁工厂专门负责生产芒果汁,苹果汁工厂专门负责生产苹果汁,如果需要生产桃子汁或菠萝汁,只需要对应增加一个新的桃子汁工厂或菠萝汁工厂即可,原有的工厂无须做任何修改,使得整个系统具有更加的灵活性和可扩展性。


命名空间为DrinkFactorySample:

1. 抽象产品类Drink(饮料类)

namespace DrinkFactorySample
{
     public interface Drink  //可以是一个接口,也可以是一个抽象类
    {
      void drink();
     }

}

2. 具体产品类MangguoDrink(芒果汁饮料类)
namespace DrinkFactorySample
{
    public class MangguoDrink : Drink
    {
        public void drink()
        {
            Console.WriteLine("芒果汁饮料正在被人们饮用");
        }
    }
}

3. 具体产品类AppleDrink(苹果汁饮料类)

namespace DrinkFactorySample
{
    public class AppleDrink : Drink
    {
        public void drink()
        {
            Console.WriteLine("苹果汁饮料正在被人们饮用");
        }
    }

}

4. 抽象工厂类DrinkFactory(饮料工厂类)

namespace DrinkFactorySample
{
    public interface DrinkFactory  //可以是一个接口,也可以是一个抽象类
    {
      Drink produceDrink();
    }
}
5.具体工厂类MangguoDrinkFactory(芒果汁饮料工厂类)

namespace DrinkFactorySample
{
    public class MangguoDrinkFactory : DrinkFactory 
    {
        public Drink produceDrink() 
        {
        //生产饮料
	Console.WriteLine("芒果汁工厂正在生产芒果汁饮料");
        Drink DDrink = new MangguoDrink();
        return DDrink;
    }	
    }
}
6.具体工厂类AppleDrinkFactory(苹果汁饮料工厂类)
namespace DrinkFactorySample
{
    public class AppleDrinkFactory : DrinkFactory
    {
        public Drink produceDrink()
        {
            //生产饮料
            Console.WriteLine("苹果汁工厂正在生产苹果汁饮料");
            Drink DDrink = new AppleDrink();
            return DDrink;
        }
    }
}

7.测试: 测试类Client:

namespace DrinkFactorySample
{
    class Client
    {
        static void Main(string[] args)
        {    
                DrinkFactory factory;
                Drink drinks;
                factory = new MangguoDrinkFactory();
                drinks = factory.produceDrink();
                drinks.drink();
                Console.Read();  
        }
    }
}
运行结果:











Ubuntu单系统安装全攻略:从删除Windows到UEFI引导设置(避坑指南) 本文提供Ubuntu单系统安装的完整指南,涵盖从安全删除Windows系统到UEFI引导设置的详细步骤。通过专业工具准备、分区方案设计、引导加载器配置等关键环节,帮助用户避免常见安装问题,实现纯净高效的Ubuntu单系统环境。特别强调UEFI引导的深度配置与安装后的性能优化,适合希望彻底转向Linux的用户。 阅读详情

相关推荐

RT_Thread Studio使用——USB虚拟串口(VCP)

RT_Thread Studio使用——USB虚拟串口(VCP)

weixin_44735205的博客 3374

【Java】设计模式——工厂模式

原文地址: http://blog.youkuaiyun.com/zxt0601/article/details/52798423 一、工厂模式概述 属于创建型设计模式,需要生成的对象叫做产品 ,生成对象的地方叫做工厂 。 二、使用场景 在任何需要生成复杂对象的地方,都可以使用工厂方法模式。 直接用new可以完成的不需要用工厂模式。 三、简单(静态)工厂模式 一个栗子: 我喜欢吃面条,抽象一个面条基类,(接口...

Moody的博客 270

Mplus—验证性因素分析(Confirmatory Factor Analysis, CFA)

介绍一阶和二阶验证性因素分析概况及在Mplus中的操作方法。

m0_54401011的博客 1万+

设计模式之工厂方法模式

相比于简单工厂模式,工厂方法模式满足开闭原则与单一职责原则,但是仍有局限,只适合创建同一种产品,不利于扩展

weixin_42443070的博客 289

微信小程序消息推送全攻略:从模板消息到订阅消息的实战避坑指南

本文深入解析微信小程序消息推送机制,对比模板消息、订阅消息与客服消息的核心差异与适用场景。重点提供订阅消息从用户授权设计、前端代码实现到后端稳定发送的完整实战指南,并分享提升消息点击率的文案与运营技巧,帮助开发者构建高效、用户友好的消息推送体系。

b3n4m5q6w7的博客 336

异步fifo的UVM验证(最终最终版)

更新了refmdl以及scb

qq_44674008的博客 2987

java设计模式——工厂模式

工厂模式使用的频率非常高,我们在开发中总能见到它们的身影。即定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。我采用饮料工厂生产饮料举例来讲解: 第一步:工厂要生产饮料 首先几乎所有的饮料都会加水加糖,我们抽象一个类来表示 public abstract class Beverage { /** * 所有饮料的公共方法 */ ...

迷一样的自信 301

ArcGIS中如何计算多个点到特定线的最短距离

现有一个点图层和一个面图层,怎么来计算这些点到这个面图层,两个面的公共边的最短直线距离呢? 1.首先得将两个图层都转为 投影坐标系 打开工具箱-数据管理工具-要素-面转线 ​ ​ 2.将面图层设为输入要素 注意要将“识别和存储面邻域信息”勾选 ​ 3.面转线成功后 打开线属性表,线图层拥有了 LEFT_FID和RIGHT_FID两个字段 ​ 4.按属性选择,表达式中输入 “LEFT_FID”<>-1 即可选出两个面的公共边 ​再将选...

GIS蒲公英的博客 6715

设计模式—创建型

创建型模式关注对象的创建过程,它将对象的创建和使用分离,在使用对象时无须知道对象的创建细节,使整个系统的设计更加符合单一职责原则,通俗的说它主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码和使用代码。 创建性模式有五种: 1.工厂模式 ①简单工厂模式(经常被用到,不属于GoF23种设计模式) ②工厂方法模式 ③抽象工厂模式 2.建造者模式 3.原型模式 4.单例模式 工厂模式 工厂模式包括简单工厂、工厂方法、抽象工厂这 3 种细分模式...

路漫漫其修远兮,吾将上下而求索。 290

解决TextMeshPro在AB打包中的字体冗余问题:源码修改全记录

本文详细介绍了如何解决TextMeshPro在AB打包中的字体冗余问题,通过源码改造和工程实践优化Unity项目的性能。内容包括资源加载路径重构、AB打包策略优化及运行时加载方案,有效减少包体体积和构建时间,提升内存效率。

weixin_42558257的博客 184

智驾车载以太网(18)-switch之报文转发和vlan处理流程

本文详细解析了交换机中报文处理和转发流程:1)通过目标MAC查找转发端口,源MAC创建ARL条目;2)VLAN标签处理包括tagged/untagged帧判断、默认VID标记等5种处理方式;3)完整转发流程包含CRC校验、IQ封装、VLAN和ARL表查询、端口向量计算及优先级队列发送。文中还涉及TCAM修改VLAN、802.1q多种模式处理等细节,省略了流量控制等次要流程。该过程实现了基于MAC和VLAN的高效二层交换。

mitugaoyang1993的博客 43

详解设计模式之工厂模式——Factory

详解设计模式之工厂模式 工厂模式在设计模式中,是分为简单工厂模式、工厂方法模式、抽象工厂模式三种; 入门案例:在饮料工厂制作各种饮料,可以分析为消费者购买饮料只需要给饮料的名字就可以,工厂负责根据不同的饮品名称生产不同的饮料给消费者消费即可,消费者不需要去知道饮料制作的流程和配料配比等一系列的内在实现,这些统统可以交给工厂来完成; 首先讲解简单工厂模式: 具体代码设计思路类图如下: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M3flolBS-1624183394849)(

weixin_43903975的博客 498

Android Audio音量——音频类型新增(九)

在实际开发中,经常会遇到需要新增一个音频类型(usage)的需求,这里我们简单介绍一下需要修改的代码。

小旭的专栏 1570

设计模式系列:6个创建型模式应用实践

创建型模式 创建型模式主要关注对象的创建过程,将对象的创建过程进行封装,使客户端可以直接得到对象,而不用去关心如何创建对象。 这里共有5种创建型模式: 单例模式(Singleton) : 用于得到某类型的唯一对象; 工厂方法模式(Factory Method) : 用于创建复杂对象; 抽象工厂模式(Abstract Factory) : 用于创建一组相关或相互依赖的复杂对象; 建造者模式(Builder) : 用于创建模块化的更加复杂的对象,将该对象的创建过程与其本身的表示或数据结构相分离;...

NIO4444 635

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

创建型模式 | 原型模式解析及应用

原型模式一、介绍二、特点三、使用场景四、类图与角色五、实战代码【Apple.java】【Banana .java】【MyFruit .java】【MyFruitStore .java】【Client .java】运行截图: 一、介绍 定义: 原型模式(Prototype Pattern)用于创建重复的对象。实现一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式...

Da_Xiong的博客 526

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

设计模式创建型模式应用场景

创建型模式常用的是factory、builder和prototype,用于抽象和简化 singleton模式用于管理有限资源(有限资源常常需要解决并发问题,实现时需要注意)

17studio 500

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

5种创建型模式之建造者模式(五)

博客参考自:建造者模式 在软件开发过程中有时需要创建一个复杂的对象,这个复杂对象通常由多个子部件按一定的步骤组合而成。例如,计算机是由 CPU、主板、内存、硬盘、显卡、机箱、显示器、键盘、鼠标等部件组装而成的,采购员不可能自己去组装计算机,而是将计算机的配置要求告诉计算机销售公司,计算机销售公司安排技术人员去组装计算机,然后再交给要买计算机的采购员。 生活中这样的例子很多,如游戏中的不同角色,其性别、个性、能力、脸型、体型、服装、发型等特性都有所差异;还有汽车中的方向盘、发动机、车架、轮胎等部件也多种多.

weixin_43828846的博客 155

创建型模式 | 工厂方法模式解析及应用

工厂方法模式一、介绍二、特点三、使用场景四、类图五、实战代码步骤1. 创建抽象工厂类【FruitFactory .java】步骤2. 创建抽象产品类【ProductA .java】步骤3. 创建具体产品类【Apple .java】【Banana .java】步骤4. 创建具体工厂类【FactoryApple .java】【FactoryBanana .java】步骤5. 客户端创建不同具体产品...

Da_Xiong的博客 688

设计模式--创建型模式比较

http://blog.youkuaiyun.com/myjoying/article/details/7884103 在GoF的《Design Patterns: Elements of Resuable Object-Oriented Software》中列举了5类创建型的设计模式,包括工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、生成器模式

jeffasd的专栏 536

创建型模式总结

创建型模式有以下几个模式: 简单工厂:用来生产同一等级结构中的任意产品。(不支持拓展增加产品) 工厂方法 :用来生产同一等级结构中的固定产品。(支持拓展增加产品) 抽象工厂 :用来生产不同产品族的全部产品。(不支持拓展增加产品;支持增加产品族) 建造者模式:将建造人各个躯体的方法和躯体的具体数据分离开来,使得相同的方法,可以建立不同形态的人 原型模式:通过拷贝,可以将代码中...

李晨璐的博客 3406

创建型模式应用实验

创建型模式(Creational Pattern)的主要特点是将对象的创建与使用分离,根据对象的创建与组合方式的不同,创建型模式可分为单例(Singleton)模式、原型(Prototype)模式、工厂方法(Factory Method)模式、抽象工厂(Abstract Factory)模式和建造者(Builder)模式 5 种。本实验的主要目的如下。 了解 5 种“创建型模式”的定义、特点和工...

xiaoyaGrace的博客 862

设计模式之创建型模式详解

简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。

zengchenAAA的博客 1769

设计模式之创建型模式

在Java中,有23种经典的设计模式,它们分为三种类型:创建型模式、结构型模式和行为型模式。创建型模式:创建型模式是一种设计模式,主要用于处理对象的创建过程,它将对象的创建和使用分离,使得系统更加灵活和可扩展。结构型模式;结构型设计模式主要关注对象组合的方式,用于描述如何将类或对象结合在一起形成更大的结构。行为型模式:行为型设计模式主要关注对象之间的通信和职责分配,描述了对象之间的相互作用和责任分配方式。

emmmm的博客 1339

设计模式|创建型模式

目录 前言 读懂UML图 设计模式六大原则 创建型模式原则 创建型模式 分析 1.简单工厂模式 2.工厂方法模式 3.抽象工厂方法模式 4.建造者模式 5.单例模式 创建型模式 总结 前言 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,设计模式不是具体的代码,而是一种合理、易拓展、易维护的代码架构思想。设计模式被运用在各种优秀的框架中。掌握设...

leo187的博客 2422

实验1:创建型模式应用实验

简单工厂模式和工厂模式的主要区别在于抽象工厂接口的存在与否。在简单工厂模式中,只有一个工厂类,它负责创建所有的产品对象,客户端只需要传入相应的参数即可获得所需的产品对象。而在工厂模式中,每个产品都对应一个具体的工厂类,客户端需要选择相应的工厂类来创建所需的产品对象。但是工厂模式的实现也更加复杂,需要为每个产品都定义一个对应的工厂类,增加了系统的复杂度。(2)如果此水果工厂还要生成桔子,试用简单工厂模式解决。通过本次实验我了解5种创建型模式的定义、特点和工作原理,理了5种创建型模式的结构、实现和应用场景。

baby1215665的博客 1460

创建型模式

创建型模式的特点和分类 创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。 创建型模式分为以下几种。 单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。 原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。 工厂方法(FactoryMethod...

ByteX的博客 873
上一篇: 使用VS2010打开VS2012/VS2013 的解决方案
下一篇: 链表的建立和基本运算
VIProgram
博客等级 码龄11年 97粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值