简单工厂模式的优化

电动转向系统 TAS 传感器 靠扭杆变形测力气,用霍尔效应算角度,借 ECU 给电机发指令。它就像 EPS 系统的 "神经末梢",把驾驶员的操作意图转化成电信号,再通过电机变成实实在在的助力,让我们开车既省力又安全。下次转动方向盘时,不妨想想这个藏在转向柱里的 "小传感器"—— 正是它的精准感知,才有了每一次顺畅的转向体验。 阅读详情

之前博客简单说了一下简单工厂模式,http://blog.youkuaiyun.com/guideit/article/details/52227970。

但是有个不好地方,他的逻辑代码类使用了静态对象针对这个,我对之前代码进行了优化,直接飙代码。

接口:

package com.example.hujhguiyhiu.test_demo.DaHuaMoShi_2;

/**
 * Created by hujhguiyhiu on 2016/8/16.
 */
public interface FengZhuang2 {
    //虚方法,主要就是在继承者们那进行逻辑运算
    public double yunSuan(double a,Integer b);

}
之前这个是一个封装类。但是优化的时候,觉得,数据还是直接传比较方便就修改了。
逻辑类代码:
package com.example.hujhguiyhiu.test_demo.DaHuaMoShi_2;

import android.util.Log;


/**
 * Created by hujhguiyhiu on 2016/8/16.
 */
public class YunSuanIpm2 {
    public  final String TYPE_SY = "SY";
    public  final String TYPE_ZLX = "ZLX";
    public  final String TYPE_FP = "FP";
    FengZhuang2 fz = null;

    public YunSuanIpm2(String type, double a, Integer b) {
        switch (type) {
            case TYPE_FP:
                fz = new fpYunSua();
                fz.yunSuan(a, b);
                break;
            case TYPE_SY:
                fz = new syYunSua();
                fz.yunSuan(a, b);
                break;
            case TYPE_ZLX:
                fz = new zlxYunSua();
                fz.yunSuan(a, b);
                break;
        }
    }

    public class syYunSua implements FengZhuang2 {
        @Override
        public double yunSuan(double a, Integer b) {
            Log.d("test", "a=" + a + ",b=" + b);
            double t = 0;
            t = a + b;
            Log.d("test", "sy总计:" + t);
            return t;
        }
    }

    public class zlxYunSua implements FengZhuang2 {
        @Override
        public double yunSuan(double a, Integer b) {
            Log.d("test", "a=" + a + ",b=" + b);
            double t = 0;
            t = a + b;
            Log.d("test", "zlx总计:" + t);
            return t;
        }
    }

    public class fpYunSua implements FengZhuang2 {
        @Override
        public double yunSuan(double a, Integer b) {
            Log.d("test", "a=" + a + ",b=" + b);
            double t = 0;
            t = a + b;
            Log.d("test", "fp总计:" + t);
            return t;
        }
    }
}
这里是重点,构造方法取代了普通方法,并且获取数据,这样一来,就可以去除静态对象了。
主函数:
package com.example.hujhguiyhiu.test_demo.DaHuaMoShi_2;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.example.hujhguiyhiu.test_demo.DaHuaMoShi_1.FengZhuang;
import com.example.hujhguiyhiu.test_demo.DaHuaMoShi_1.YunSuanIpm;
import com.example.hujhguiyhiu.test_demo.R;

/**
 * Created by hujhguiyhiu on 2016/8/16.
 */
public class DHMS_Activity2 extends AppCompatActivity {
    private FengZhuang2 fz;
    private EditText editText1;
    private EditText editText2;
    private Button bt1;
    public final String TYPE_SY = "SY";
    public final String TYPE_ZLX = "ZLX";
    public final String TYPE_FP = "FP";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dhms1);
        editText1 = (EditText) findViewById(R.id.et1);
        editText2 = (EditText) findViewById(R.id.et2);
        bt1 = (Button) findViewById(R.id.bt1);
        //类型
        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                double numA = Double.valueOf(editText1.getText().toString());
                int numB = Integer.valueOf(editText2.getText().toString());
                YunSuanIpm2 yst = new YunSuanIpm2(TYPE_FP, numA, numB);
            }
        });
    }
}

优化之后,不单单是把静态对象的隐患给消除了,而且还加强了解耦。


从HCI层浅析LE Audio通话建立流程 本文分析了BLE AUDIO通话协议建立的全过程。当手机来电时,系统会通过CCP EATT链路通知耳机准备通话,并断开原有音乐CIS连接。随后建立通话专用的CIG组,其参数设置(如MAX SDU SIZE=80、RTN=2)与音乐场景明显不同,更注重通话的实时性。文中详细描述了设置ISO数据路径、启用ASE、建立CIS连接等关键步骤,特别指出通话采用Conversational音频上下文类型。最后解析了ISO数据包参数含义,展示了10ms周期、32kHz采样率等通话特性参数。整个过程体现了BLE AUDIO 阅读详情

相关推荐

乐鑫WIFI芯片开发流程梳理-工具链、编译和下载

最近开始基于乐鑫ESP32的WIFI模组的软件开发,首先要做整套流程的梳理,乐鑫官网以及安信可上已经有了较为系统的资料,但是在实现过程中也遇到了一些问题,花了几天去解决,所以为了总结,也为了给其他人提供一些借鉴,把流程分享一下,官网上相对比较完善的,就不在赘述。 1. 开发方案选择 目前网上有两套较为成熟的方案: (1)基于乐鑫官网推荐的开发方式,原网页:https://docs.espress...

一名嵌入式软件工程师的自我成长 3926

项目学习——简单工厂模式优化

项目学习——简单工厂模式优化 一、前言 最近接触了一个项目,在这个项目中有一个EventHandler的概念,用于解决KAFKA不同类型的数据。 为了架构设计,开发成员在这里使用了工厂模式来处理这块请求。但是他通过引入spring的InitializingBean接口,解决了简单工厂中可能会出现大量的if-else的问题。 二、简单工厂模式设计图 在这个项目中有一个EventHandler基本的工厂模式架构图是这样的。 本项目的EventHandler架构大致也是这样的。 三、传统的简单工厂缺点 通过上图

一名假人的博客 957

Matlab实战:从零搭建弹道导弹六自由度仿真模型(附完整代码)

本文详细介绍了如何使用Matlab从零搭建弹道导弹六自由度仿真模型,涵盖仿真环境配置、核心运动方程实现、气动力建模及仿真结果分析。通过完整代码示例,帮助读者掌握弹道导弹六自由度仿真的关键技术,适用于航空航天工程和复杂系统建模领域。

x8y9z0的博客 946

【C#设计模式】总目录(共23种)【已全部完结!】

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块..

星Yeah 的博客 2万+

RPG MV游戏数据修改指南:从JSON解析到脚本进阶

游戏数据修改是游戏开发与逆向工程中的常见实践,其核心原理在于解析和操作游戏资源文件。许多现代游戏引擎采用结构化数据格式(如JSON)存储游戏配置,这为外部修改提供了可能。通过理解文件结构、数据格式与游戏逻辑的关联,开发者或爱好者可以调整游戏平衡、修复问题或实现个性化定制,这不仅能深化对游戏设计机制的理解,也具备实际的技术学习价值。本文以基于Web技术栈的RPG Maker MV(RPG MV)引擎为例,其游戏数据多以明文JSON存储,结构清晰。文章将具体阐述如何安全地修改角色属性、物品效果、敌人数据及技能公

weixin_29001419的博客 403

嵌入式学习笔记- 关于电容的纹波电流

纹波电流是导致电解电容发热、影响其寿命的关键交流电流成分。它不是一种特殊的电流,而是电路中必然存在的现象。要重视,不能忽视。必须保证电路中的纹波电流 < 电容的额定纹波电流。电容鼓包爆浆,要怀疑是否是纹波电流过大或电容ESR变大所致。希望这个解释能帮助您彻底理解这个概念!二 电容纹波电流与频率的关系在大多数情况下,频率越高,电容所能承受的额定纹波电流值越大。【个人理解:因为频率越低ESR越大,具体见第三节ESR与频率的关系】下面我为您详细解释为什么会这样,以及在实际应用中如何考虑。

qq_35771411的博客 2192

C# 23种设计模式汇总

赋值:---如果是值类型或者string,赋值的实例;如果是引用类型,赋值的是引用地址 浅拷贝----仅仅复制了引用地址,复制对象或被复制对象的改变,是互相影响的(一变则都变) 深拷贝---对对象的完全复制,即:复制对象或被复制对象的改变,相互不影响(相互独立,互不影响) ...

qi923432163的博客 2500

海康VisionMaster与西门子Smart 200进行S7通信

海康VisionMaster与西门子Smart 200进行S7通信

haier123888的博客 8177

c#实现23种常见的设计模式

抽象工厂模式是一种创建型设计模式,它提供了一种接口,用于创建相关或依赖对象的系列,而不指定这些对象的具体类。在这个模式中,客户端通过他们的抽象接口使用类,允许该模式在不影响客户端的情况下替换实现类。// 抽象产品:动物// 具体产品:狗// 具体产品:猫// 抽象工厂// 具体工厂:狗工厂// 具体工厂:猫工厂以上代码定义了两种动物Dog和Cat,它们都实现了IAnimal接口。然后我们有两个工厂类,DogFactory和CatFactory,它们都继承自。DogFactory。

huang714的专栏 4957

Open3D 机载点云电力线提取【2025最新版】

传统方法实现的机载点云电力线分割提取。博客长期更新,本文最新更新时间为:2025年3月23日。

点云侠的博客 4468

2026年紫光同创数字IC笔试试卷带答案

FPGA基础知识与设计要点摘要 本文围绕FPGA与数字IC设计核心概念,通过单选题、波形分析题、多选题和简答题形式,系统梳理了以下关键知识点: FPGA基础架构 查找表(LUT)是实现组合逻辑的基本单元(题1) CLB包含LUT、触发器和进位链,后者加速算术运算(题6,10) 布局布线优化是减少关键路径延迟的核心方法(题7) 时序分析要点 建立时间(时钟沿前数据需稳定)与保持时间(时钟沿后需保持)的定义(题2,简答1) 亚稳态成因及两级同步器处理跨时钟域信号的方法(多选题1,波形题5) 特殊设计技术 异步复

Open 114

23种设计模式【C#代码举例】

23种设计模式读后笔记。是一本叫《大话设计模式(大鸟和小菜)》的书。感觉讲的深入浅出。

百锦再的博客 1万+

【Android调试】高通adb识别不到设备的完整排查指南:从驱动到端口一步到位

本文系统梳理高通(Qualcomm)平台Android设备adb无法识别的完整排查流程。从最基础的USB连接检查开始,到Windows设备管理器中驱动状态的判断、高通USB驱动的正确安装与更新方法,再到adb端口被占用、USB调试未开启、驱动签名校验失败等高频场景的解决方案。每一步均配截图和操作命令,文末附常见报错速查表,适合做系统开发、刷机调试或者Android Framework bringup时遇到adb不通的工程师快速定位。

weixin_44081096的博客 279

Java简单工厂模式以及来自lambda的优化

前言    设计模式是软件工程中一些问题的统一解决方案的模型,它的出现是为了解决一些普遍存在的,却不能被语言特性直接解决的问题,随着软件工程的发展,设计模式也会不断的进行更新,本文介绍的是经典设计模式-简单工厂模式以及来自java8的lambda的对它的优化。 什么是简单工厂模式 概念 定义一个工厂类,对实现了同一接口的一些类进行实例的创建。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决...

weixin_30349597的博客 168

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

用C++写一个源程序用简单工厂模式改写后得到优化的例子,尽量多体现简单工厂模式的优势

• 示例:添加椭圆只需扩展ShapeFactory,不需要修改任何现有客户端代码。• 体现:通过字符串标识符创建对象(“circle”/"rectangle"等)• 示例:添加Ellipse类只需扩展工厂的createShape方法。• 体现:三角形需要2个参数,圆形只需1个参数,但通过统一接口创建。• 体现:添加新图形时只需扩展工厂类,不影响已有客户端代码。• 对比:无工厂模式时需要记住不同类的构造参数差异。• 体现:工厂类专注对象创建,客户端专注业务操作。• 优势:新增图形类型只需修改工厂类。

slty_123的博客 346

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java代码优化——静态工厂方法与公有构造器

java代码优化——静态工厂方法与公有构造器

weixin_45817985的博客 582

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【设计模式】简单工厂模式

文章目录一、简单工厂模式二、使用unique_ptr的优化三、简单工厂模式总结(1)优点(2)缺点(3)使用场景 一、简单工厂模式 以汽车厂生产为例子: 工厂角色:(汽车厂)一个静态公有成员方法负责生产符合要求的产品; 抽象产品:是一个抽象类,其派生类有各种各样的产品; 具体产品:汽车car、公交车bus 对应的代码: SimpleFactory.h #ifndef SIMPLEFACTORY_H #define SIMPLEFACTORY_H #include <iostream> #in

xiaoxiaoguailou的博客 260

简单工厂模式+工厂方法模式+反射优化的工厂模式

平时所说的工厂模式,分为简单工厂模式、工厂方法模式和抽象工厂模式,属于设计模式中的创建型模式。 创建型模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式创建对象。——摘自百度百科 工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。——摘自C语言中文网 本想通过定义来进一步理解工厂模式,但看到这个定义之后感觉…,可能理科+计算机+男同志更适合采用图和代码的方式理解知识吧,所以后面我还是通过UM

qq_45043381的博客 462

java设计模式之简单工厂模式

java设计模式之简单工厂模式

J_Newbie的博客 646

设计模式(创建型模式)-简单工厂模式

1.定义 定义一个用于创建对象的接口,让子类决定实例化哪个类。 2.介绍 简单工厂模式属于创建型模式。 简单工厂模式又叫做静态工厂方法模式 3.UML类图 角色说明: Product(抽象产品类):要创建的复杂对象,定义对象的公共接口。 ConcreteProduct(具体产品类):实现Product接口。 Factory(工厂类):返回ConcreteProduct实例。 ...

u010277958的博客 185

简单工厂模式

简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 优点:工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创

w302974215的专栏 350

Java代码优化:静态工厂方法 Static Factory Method

Effective Java中提出了静态工厂,即不使用产品的constructor来提供产品,静态工厂不是开发模式,而是一种改进提供实例的策略。 如何实现? 很简单,静态工厂方法的定义是:一个返回类的实例的静态方法 这样做有什么好处? 1)静态工厂方法签名可读性强,封装了不必要的参数,减少了使用错误。 2)静态工厂方法不需要每次都new一个对象,可以取得预载或缓存对象 3)静态工厂方法可以返回对象...

OliverZang的博客 499

简单工厂模式 应用

一.简介 简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 将“类实例化的操作”与“使用对象的操作”分开,让使用者不用知道具体参数就可以实例化出所需要的“产品”类,从而避免了在客户端代码中显式指定,实现了解耦...

weixin_40991408的博客 332

策略+简单工厂模式优化大量if-else分支

通过策略模式和简单工厂模式的结合优化大量if-else分支

Light_Dream的博客 697

【代码优化】考虑使用静态工厂方法代替构造器

静态工厂方法与设计模式中的工厂方法模式不同,和设计模式中的工厂方法模式不直接对应。 使用静态工厂方法比构造器的优势: 第一、静态工厂方法是有名称的,而构造器是通过参数判断的。 每个静态工厂方法都有自己的名字,可以根据名称就可以判断它要做什么事情,而构造器是做不到的。 如:构造器BigInteger(int,int),返回BigInteger可以是素数,偶数等,而用名称Big

猫的阁楼 1065

Effective Java第二版笔记之考虑使用静态工厂方法代替构造器

创建对象最直接的想法就是通过new调用构造器,其实大多数情况下应当通过自己写一个静态公有方法,返回类的实例,比如下面这个方法: public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 和直接使用构造器相比,使用静态工厂方法具有以下优点: 静态工厂方法可以根据用途自己定义名称(不必与类相同),可读性更强 静态工厂方法可能不用在每次调用时都创建新对象 静态工厂方法可以返回声明

谈谈IT 176
上一篇: 简单工厂设计模式
下一篇: listview和listFragment详细版,已解决chebox的复用,Glide实现图片的圆形,以及按钮添加数据
guideit
博客等级 码龄12年 1粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值