梳理你的思路(从OOP到架构设计)_设计模式Factory Method模式

目录

1、Factory Method模式

2、范例: Android + FM(工厂)模式

3、Android里处处可见的FM模式的应用

1、Factory Method模式

  • 誰來創建<T>的對象呢?
  • 例如, 剛才的Template Method模式內含一個EIT造形,那麼, 請問: 誰來創建該<T>的對象呢?
  • Factory Method模式就是一種常用的方案。

2、范例: Android + FM(工厂)模式

在Android框架里,处处可见FactoryMethod模式。例如, Activity、 Service等抽象类别里都定义了onCreate()函数,它就是一个典型的FactoryMethod函数。

// GraphicView.java
// ……..
public class GraphicView extends View{private Paint paint= new Paint();GraphicView(Context ctx) { super(ctx); }@Override protected void onDraw(Canvas canvas) {int line_x = 10; int line_y = 50;canvas.drawColor(Color.WHITE);paint.setColor(Color.GRAY); paint.setStrokeWidth(3);canvas.drawLine(line_x, line_y, line_x+120, line_y, paint);paint.setColor(Color.BLACK);paint.setStrokeWidth(2);canvas.drawText("這是繪圖區", line_x, line_y + 50, paint);int pos = 70; paint.setColor(Color.RED);canvas.drawRect(pos-5, line_y - 5, pos+5, line_y + 5, paint);paint.setColor(Color.YELLOW);canvas.drawRect(pos-3, line_y - 3, pos+3, line_y + 3, paint);}
}// myActivity.java
// ……..
public class ac01 extends Activity {private GraphicView gv = null;@Overridepublic void onCreate( Bundle savedInstanceState ) {super.onCreate(savedInstanceState);gv = new GraphicView(this);setContentView(gv);}
}

myActivity类,通过new GraphicView(this); 来实现工厂EIT生成产品EIT的连接

3、Android里处处可见的FM模式的应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/63793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tauri桌面应用开发入门

简介 tauri是一款基于web的桌面应用前端框架 因为使用webviews渲染,而不是像electron自带一个浏览器内核,所以打包之后的空间更小,十几mb 前端界面使用web,可以采取流行的框架,入react,vue等 前端后台采用rust,弥补前端无法直接访问操作系统,常用于访问本地文件系统 官方中…

selenium 报错 invalid argument: invalid locator

环境&#xff1a; Python3.12.2 selenium4.0 报错信息&#xff1a; invalid argument: invalid locator 错误分析&#xff1a; selenium语法错误,find_element方法少写By.XPATH参数 错误语法如下&#xff1a; driver.find_element(//div[id"myid"]) 解决办…

ESP8266 WiFi模块入门:搭建网络与测试实践

在物联网&#xff08;IoT&#xff09;应用中&#xff0c;设备联网是核心功能之一。而ESP8266串口WiFi ESP-01模块是一款低成本、功能强大的UART-WiFi透传模块&#xff0c;广泛应用于智能家居、工业控制等领域。本篇文章将从基础出发&#xff0c;讲解如何使用ESP8266模块进行WiF…

框架问题学习

1、gin 1.1、gin框架路由是怎么处理的 在 Gin 中&#xff0c;路由是通过 gin.Default() 或 gin.New() 创建的 *gin.Engine 对象来管理的。gin.Default() 是 gin.New() 的一个封装&#xff0c;它在创建路由对象时会自动添加一个默认的中间件&#xff08;如日志记录、恢复中间件…

Java模拟Mqtt客户端连接Mqtt Broker

Java模拟Mqtt客户端基本流程 引入Paho MQTT客户端库 <dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.mqttv5.client</artifactId><version>1.2.5</version> </dependency>设置mqtt配置数据 …

电子电气架构 --- 队列刷写场景及刷写上位机浅析

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…

springboot根据租户id动态指定数据源

代码地址 码云地址springboot根据租户id动态指定数据源: springboot根据租户id指定动态数据源,结合mybatismysql多数源下的事务管理 创建3个数据库和对应的表 sql脚本在下图位置 代码的执行顺序 先设置主数据库的数据源配置目标数据源和默认数据源有了主库的数据源&#xff…

C++简明教程(文章要求学过一点C语言)(3)

一、编程工具大揭秘——IDE 当我们准备踏入 C 编程的奇妙世界时&#xff0c;首先要认识一个重要的“魔法盒子”——集成开发环境&#xff08;IDE&#xff09;。IDE 就像是一个全能的编程工作室&#xff0c;它把我们写代码所需要的各种工具都整合到了一起&#xff0c;让编程这件…

达梦官方工具 SQLark数据迁移(oracle->达梦数据库)

应国产化需求需要,需将系统中涉及的各中间件替换成国产中间件,此文介绍了从Oracle迁移数据至达梦dm8的步骤,该文在windos环境下已验证测试过 1 SQLark介绍 SQLark是一款专为信创应用开发者设计的数据库开发和管理工具。它支持快速查询、创建和管理多种类型的数据库系统&#xf…

【JAVA】JAVA接口公共返回体ResponseData封装

一、JAVA接口公共返回体ResponseData封装&#xff0c;使用泛型的经典 例子 public class ResponseData<T> implements Serializable { /** * */ private static final long serialVersionUID 7098362967623367826L; /** * 响应状态码 */ …

AlipayHK支付宝HK接入-商户收款(PHP)

一打开支付宝国际版 二、点开商户服务 三、下载源码

【Prompt Engineering】6 文本扩展

一、引言 文本扩展&#xff1a;将短文本输入到大型语言模型中&#xff0c;生成更长的文本。应用场景&#xff1a;头脑风暴、生成电子邮件或论文等。风险&#xff1a;可能被用于生成垃圾邮件。使用原则&#xff1a;负责任地使用&#xff0c;确保有益于人们。技术准备&#xff1…

nginx学习总结(不包含安装过程)

1. nginx常见配置 http服务上支持【若干虚拟主机】。每个虚拟主机对应一个server配置项&#xff0c;配置项里面包含该虚拟主机相关的配置。 server{listen 80 default;server_name www.yonqin.com;index index.html index.htm index.php;root /data/www;location ~ .*\.(gif|…

CSS系列(29)-- Scroll Snap详解

前端技术探索系列&#xff1a;CSS Scroll Snap详解 &#x1f4dc; 致读者&#xff1a;探索流畅滚动体验 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 CSS Scroll Snap&#xff0c;这个强大的滚动优化特性。 基础特性 &#x1f680; 容器设置 /* 基础滚动…

如何设计高效的商品系统并提升扩展性:从架构到实践的全方位探索

在现代电商、零售及企业资源管理系统中&#xff0c;商品管理无疑是核心模块之一。随着市场的变化与企业规模的扩展&#xff0c;商品系统需要具备强大的功能支持以及高效的扩展能力&#xff0c;以应对日益复杂的业务需求。一个设计良好的商品系统不仅仅是一个商品信息的容器&…

RFdiffusion get_torsions函数解读

函数功能 get_torsions 函数根据输入的原子坐标(xyz_in)和氨基酸序列(seq),计算一组主链和侧链的扭转角(torsions)。同时生成备用扭转角(torsions_alt),用于表示可以镜像翻转的几何结构,并返回掩码(tors_mask)和是否平面化(tors_planar)的信息。 输入参数 xyz…

docker springboot 运维部署详细实例

环境安装 [rootiZbp1dcnzq7pzpg9607m6pZ ~]# docker -v Docker version 26.1.4, build 5650f9b镜像构建 Dockerfile 文件内容 FROM openjdk:8 # Author Info 创建人信息 MAINTAINER ratelcloudfoxmail.com ENV PORT20001 EXPOSE 20001 RUN mkdir /usr/local/ratel-boot-serv…

贪心算法在背包问题上的运用(Python)

背包问题 有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 这就是典型的背包问题(又称为0-1背包问题),也是具体的、没有经过任何延伸的背包问题模型。 背包问题的传统求解方法较为复杂,现定义有一个可以载重为8kg的背…

【ArcGIS Pro微课1000例】0063:处理无人机数据(空三、生成DOM、DSM、DTM)

使用ArcGIS Pro 正射拼接处理无人机数据流程化工具,不需要额外产品许可的支持,只需要桌面是高级版许可即可支持。ArcGIS Pro处理无人机摄影测量数据主要内容有:空三、生成DOM、DSM、DTM。 文章目录 一、创建映射项目二、提交自由空三三、添加控制点优化四、提交产品生产一、…

解锁 Jenkins 搭建全攻略

一、Jenkins 简介 &#xff08;一&#xff09;简述 Jenkins 的作用与价值 Jenkins 是一款在软件开发领域备受瞩目的开源软件项目&#xff0c;它基于 Java 开发&#xff0c;是极为重要的持续集成工具。在软件开发的整个流程中&#xff0c;Jenkins 发挥着关键作用&#xff0c;能…