编程学习之简单工厂模式与策略模式

韦小逸      2022-02-17     790

关键词:

很久之前在学习c++的时候就听到老师说写代码要考虑重构,架构,在此期间学习到了一种简单工厂模式。

何为简单工厂模式呢?简单工厂模式又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

举个栗子,我们可能会遇到这类问题,假如需要一个软件,它可以计算各种图形的面积,使用简单工厂模式来构架的话就是通过创建一个工厂类,而程序运行过程中这些实例化这些具体的计算面积的算法类,然后主程序通过调用这些实例化类的方法来进行计算对应图形的面积。

而策略模式则是对算法或者是一系列同类方法的封装,同样以上例的问题,用策略模式来构建的话,就是将每一种计算图形面积的方法单独封装成类,当需要某种算法的时候,则直接通过使用参数找到对应算法类的计算方法得到计算结果。

第一次学习这2种设计模式的时候,总是将这2者弄混,因为都是用了多态,且有些时候代码中这2种设计模式成组合状态出现。

其实判断方法很简单:

假如使用了一个单独的类来负责某一些功能类的实例化,则是工厂模式,他返回的值是一个对象

如果每次运行都是通过直接功能类的方法得到对应的结果,则是策略模式,它返回的是功能方法计算运行的结果

如果有一个单独负责某一些功能类的实例化同时也负责运行这些实例化出的功能类的方法并返回结果,则是工厂模式与策略模式的组合。

我有些懒所以暂时就不附图了,但是相关的设计模式样例代码和图片我以后都会放出来供大家下载学习。

为什么我记得之前直接ctrl+c和ctrl+v就可以加图片啊,现在不会加图片了,宝宝心里苦T^T

《javascript设计模式与开发实践》学习之使用策略模式计算奖金

简洁的做法如下: 查看详情

策略模式与简单工厂模式(代码片段)

参考工厂模式中只管生产实例,具体怎么使用工厂实例由调用方决定,工厂模式调用方可以直接调用工厂实例的方法属性等。策略模式是将生成实例的使用策略放在策略类中配置后才提供调用方使用,策略模式不能直接调用实例... 查看详情

设计模式学习之抽象工厂模式

抽象工厂模式定义:Provideaninterfaceforcreatingfamiliesofrelatedordependentobjectswithoutspecifyingtheirconcreteclasses.                查看详情

java设计模式--工厂模式学习之使用…

 如果不使用工厂模式来实现我们的例子,也许代码会减少很多--只需要实现已有的车,不使用多态。但是在可维护性上,可扩展性上是非常差的(你可以想象一下,添加一辆车后要牵动的类)。因此为了... 查看详情

简单工厂模式与策略模式区别

https://blog.csdn.net/lmx125254/article/details/86625960https://www.cnblogs.com/hama1993/p/10442519.htmlhttps://blog.csdn.net/zwj_jyzl/article/details/80869905 查看详情

设计模式--简单工厂模式

...解,方便日后自己回想并同一时候希望本笔记能够对各位编程者有所帮助,相关技术上博主理解如有偏颇,还请指正。简单工厂模式是项目开发中最经常使用也是最重要的一种设计模式。差点儿在全部的项目开发中都会用到。可... 查看详情

(十四)笔记.net学习之rabbitmq工作模式

RabbitMQ在.net中简单使用一、简单模式1.生产者2.消费者二、工作队列模式1.工作队列模式介绍2.生产者发送消息3.消费能力三、发布/订阅模式1.介绍2.生产者3.消费者四、Routing路由模式1.介绍2.生产着3.消费者五、topic主题模式1.介绍2.... 查看详情

一起学设计模式状态模式+装饰器模式+简单工厂模式实战:提交个订单我到底经历了什么鬼?(代码片段)

前言之前在我的博客(一枝花算不算浪漫)中已经更新过两篇设计模式相关的内容【一起学设计模式】策略模式实战一:基于消息发送的策略模式实战【一起学习设计模式】策略模式实战二:配合注解干掉业务代码中冗余的ifelse...... 查看详情

简单工厂工厂方法抽象工厂策略模式策略与工厂的区别

一、引子话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰)、Bmw(宝马)、Audi(奥迪)),还雇了司机为他开车。不过,爆发户坐车时总是这样:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐... 查看详情

工厂模式抽象工厂模式策略模式

抽象工厂模式参考:抽象工厂、工厂方法和简单工厂的不同点及使用心得简单工厂模式(SimpleFactoryPattern)简单工厂SimpleFactoryPattern(又叫静态工厂方法)简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactoryMethod)模... 查看详情

策略模式的学习之道(代码片段)

策略模式1.需求分析:一个考试系统,当考生的成绩通过后(成绩大于60分)会通过各种方式通知用户。通知方式有:APP消息推送、短信、邮件、站内消息四种方式;但是每种方式是否进行通知是要进行在表中配置的;假设我们... 查看详情

设计模式之简单工厂模式与策略模式(通过两种模式设计的计算器/java)(代码片段)

...聚设计原则。所以决定在学习设计模式后,进行一个简单的小项目来练习使用设计模式。本次选择了简单工厂模式、策略模式以及两个模式混合使用来完成计 查看详情

设计模式之简单工厂模式与策略模式(通过两种模式设计的计算器/java)(代码片段)

...聚设计原则。所以决定在学习设计模式后,进行一个简单的小项目来练习使用设计模式。本次选择了简单工厂模式、策略模式以及两个模式混合使用来完成计 查看详情

java设计模式--工厂模式学习之使用…

 如果不使用工厂模式来实现我们的例子,也许代码会减少很多--只需要实现已有的车,不使用多态。但是在可维护性上,可扩展性上是非常差的(你可以想象一下,添加一辆车后要牵动的类)。因此为了... 查看详情

浅谈简单工厂模式和策略模式

1、简单工厂模式如图代码: 缺点:简单工厂模式需要客户端认识两个类,Cash和CashFactory优点:子类的实例化被工厂封装了起来,客户端看不到2、策略模式如图代码:publicclassContext{Strategystrategy;publicContext(Strategystrategy){this.str... 查看详情

设计模式之简单工厂模式与策略模式(通过两种模式设计的计算器/java)(代码片段)

...聚设计原则。所以决定在学习设计模式后,进行一个简单的小项目来练习使用设计模式。本次选择了简单工厂模式、策略模式以及两个模式混合使用来完成计算器的功能。简单工厂模式在百度百科我们可以直接搜索到简单工... 查看详情

每天学设计模式:简单工厂模式

一、面向对象编程1、可维护性  当日后代码需要修改逻辑的时候,只需要修改某些类或者增加某些类,对主程序和大部分代码不需要修改,体现为可维护性。2、可复用性  将一定的代码进行封装,在多处可以重复使用。3、... 查看详情

简单工厂模式和策略模式的差别

直接上代码:简单工厂模式:------------------------------一个抽象类  --------------------------abstractclassAbsClass{   //抽象方法:提供一些列的算法操作   publicabstract voidacceptCash(stri 查看详情