跑车

创建型模式:抽象工厂

混江龙づ霸主 提交于 2020-04-06 07:19:18
个人博客原文: 创建型模式:抽象工厂 五大创建型模式之三:抽象工厂。 简介 姓名 :抽象工厂 英文名 :Abstract Factory Pattern 价值观 :不管你有多少产品,给我就是了 个人介绍 : Provide an interface for creating families of related or dependent objects without specifying their concrete classes. 为创建一组相关或相互依赖的对象提供一个接口,而且无须指定它们的具体类。 (来自《设计模式之禅》) 今天讲的是抽象工厂模式,小伙伴可能有疑问,抽象工厂和工厂方法之间都有工厂,那肯定是有什么联系的,具体是什么关系呢?简单的说:工厂方法是在解决一个产品多个层级方面的事情;而抽象工厂致力于解决多个产品多个层级方面的事情。举个例子:汽车是由很多零件组成的,比如引擎、轮胎、方向盘等等。现在如果我们是轮胎生产方,要生产宝马轮胎和奔驰轮胎,要用工厂方法还是抽象工厂实现呢?答案是:工厂方法。轮胎是一个产品,宝马轮胎和奔驰轮胎是 2 个不同层级的轮胎,所以用工厂方法解决就足够。假如现在我们是汽车生产方,要生产宝马汽车和奔驰汽车,汽车又包含轮胎和方向盘等等,要用哪个来实现?既然是上面的是工厂方法,那这个就用抽象工厂,因为这涉及到多个产品(轮胎、方向盘等等)和 2

设计模式实例(Lua)笔记之四(Builder 模式)

白昼怎懂夜的黑 提交于 2020-04-06 07:18:47
1.描写叙述: 又是一个周三,快要下班了,老大突然又拉住我,喜滋滋的告诉我“牛叉公司非常惬意我们做的模型,又签订了一个合同,把奔驰、宝马的车辆模型都交给我我们公司制作了,只是这次又额外添加了一个新需求:汽车的启动、停止、喇叭声音、引擎声音都有客户自己控制,他想什么顺序就什么顺序,这个没问题吧?”。 看着老大殷切的目光,我还能说啥,肯定的点头,“没问题!”,加班加点做呗,“再苦再累就当自己二百五 再难再险就当自己二皮脸 与君共勉!”这句话说出了我的心声。 那任务是接下来,我们怎么做实现呢?首先我们想了,奔驰、宝马都是一个产品,他们有共同拥有的属性,牛叉公司关心的是单个模型,奔驰模型 A 是先有引擎声音,然后再启动;奔驰模型 B 呢是先启动起来,然后再有引擎声音,这才是牛叉公司要关关心的,那到我们老大这边呢,就是满足人家的要求,要什么顺序就立刻能产生什么顺序的模型出来,我呢就负责把老大的要求实现掉,并且还要是批量的,看不懂?没关系,继续看下去,首先由我生产出 N多个奔驰和宝马车辆模型,这些车辆模型的都有 run 方法,可是详细到每个模型的 run 方法可能中间的执行任务的顺序是不同的,老大说要啥顺序,我就给啥顺序,终于客户买走后仅仅能是既定的模型。先看类图: 凝视: main()。客户 CCarModel。产品模型 CBenzModel。奔驰模型 CBMWModel,宝马模型

eclipse搭建android开发环境

时光毁灭记忆、已成空白 提交于 2020-04-05 22:54:58
参考 http://blog.csdn.net/u013067166/article/details/48594371/ 我在ubuntu上用android studio实在很卡,新手生无可恋。 遂辗转于eclipse。安装ADT的时候遇到一个问题: error occurred while collecting items to be installed session context was:(profile=C__Program Files_eclipse_eclipse, phase=org.eclipse.equinox.internal.p2.engine.phases.Collect, operand=, action=). No repository found containing: osgi.bundle,org.eclipse.cdt,9.2.1.201703062208 No repository found containing: osgi.bundle,org.eclipse.cdt.build.gcc.core,1.0.0.201703062208 No repository found containing: osgi.bundle,org.eclipse.cdt.codan.checkers,3.2.0.201703062208 No

PHP设计模式:抽象工厂

时光毁灭记忆、已成空白 提交于 2020-02-07 18:06:53
示例代码详见 https://github.com/52fhy/design_patterns 抽象工厂 抽象工厂(Abstract Factory)是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车、跑车、货车、客车,那么每一个工厂都要有创建轿车,货车和客车的方法。 在学习抽象工厂具体实例之前,应该明白两个重要的概念: 产品族 和 产品等级 。 产品等级:同一个产品的不同分类或者组成。 产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。 例如:汽车分奔驰、宝马,奔驰下面还有跑车、MINI车等等。其中奔驰就是产品族,跑车、MINI车是产品等级。 再例如:AMD的主板、芯片组、CPU组成一个家族,Intel的主板、芯片组、CPU组成一个家族。而这两个家族都来自于三个产品等级:主板、芯片组、CPU。 抽象工厂是汽车生产工厂的抽象,工厂方法是一个汽车工厂里每种汽车型号的抽象;简单工厂和抽象工厂含义一样,只是产品型号是固定的。 应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。 抽象工厂UML图: 简单工厂需要有4个角色: Product接口类:用于定义产品规范,例如ProductA、ProductB,抽象工厂有多个Product接口类; 具体的产品实现,例如ProductA1、ProductA2; 抽象工厂类IFactory:用于规范每个工厂;

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

会有一股神秘感。 提交于 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(); }

深度跑车 - DeepRacer

烈酒焚心 提交于 2020-02-02 01:10:22
在当地时间11月28日,美国拉斯维加斯举办的AWS(Amazon Web Services)产品发布会中,CEO Adny Jassy 在宣布的十多个产品中居然也包括有一个用于智能赛车比赛的产品 AWS DeepRacer,计划建立全球自动小车比赛联盟,开放给任何人参加比赛。看看这款1/18的四轮赛车车模如下配置,主要的传感器包括有一个400万像素的摄像头。车模售价$399,明年三月份上市。 ^AWS 宣布的比赛智能车模硬件配置^ None 现在这款车模中的增强学习算法可以借助于亚马逊的DeepRacer 云平台中SageMaker提供的强化学习(Reinforce Learning) 进行训练学习。看来智能车模比赛正在快速变得更深。 什么是强化学习,它具体如何实现,将来会推文介绍。那么使用强化学习训练处来的车模究竟跑的怎么样呢? 下面的动图是采集自参赛同学的哥哥在产品发布现场看到的演示: 经过RL训练后的车模运行情况1 经过RL训练后的车模运行情况2 估计所有看到这款使用AI训练的车模在这样的环境中跑车这样,不免有些失望。车模上还配置了那么强大的处理器和传感器,为何仅仅跑成这个样子?国内的智能车竞赛的车模在同样的赛道上估计早就把他甩到十万八千里了。 这个车模对于赛道的识别和控制规律都是在AWS DeepRacer 3D 仿真环境下,通过增强模型训练处来的。

Eclipse搭建SSM框架

帅比萌擦擦* 提交于 2020-01-20 03:06:22
Eclipse搭建SSM框架 1、sever及maven配置 2、进行JDK及tomcat集成 3、进行SSM框架搭建 4、 填写项目的maven坐标 5、 添加pom.xml全局依赖jar包 6、 pom.xml加入Maven编译插件,并配置JDK和编码 7、生成jdbc配置文件及目录 8、创建MyBatis-config.xml配置文件 9、创建配置文件:spring-mybatis.xml 10、Spring与SpringMVC整合:spring-mvc.xml 11、 配置WEB-INF下的web.xml文件 12、配置完成后创建对应接口进行测试 1、sever及maven配置 window—preference:进行sever及maven配置 2、进行JDK及tomcat集成 配置及集成详细步骤详见网上案例; 3、进行SSM框架搭建 File—new Project—maven 进行项目创建 4、 填写项目的maven坐标 5、 添加pom.xml全局依赖jar包 6、 pom.xml加入Maven编译插件,并配置JDK和编码 7、生成jdbc配置文件及目录 在src/main/resources目录下创建spring和mapping文件夹,根目录放jdbc和log4j日志配置文件; Spring:用于放入Spring配置文件; Mapping

eclipse项目的导入

淺唱寂寞╮ 提交于 2020-01-13 23:28:07
在左侧的PackageExplorer区域右键,选择 import 选择 General -- Existing Projects into Workspace 选择后,点击 next 在新的窗口中,点击 Browse 找到需要导入的项目(注意,找到项目的名字位置就可以了),选中要导入的项目,点击Copy复选框,点击Finish完成。 注意事项:Eclipse中已经存在的同名项目不能再次导入 来源: CSDN 作者: little-stars 链接: https://blog.csdn.net/weixin_41874888/article/details/103952072

eclipse扩容

那年仲夏 提交于 2020-01-08 08:29:49
-vm D:/jdk-6u17-windows-i586/jdk1.6.0_17/bin/javaw.exe -startup plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar -nl en_US --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120913-144807 -product org.eclipse.epp.package.jee.product --launcher.defaultAction openFile --launcher.XXMaxPermSize 512M -showsplash org.eclipse.platform --launcher.XXMaxPermSize 512m --launcher.defaultAction openFile -vmargs -Dosgi.requiredJavaVersion=1.5 -Dhelp.lucene.tokenizer=standard -Xms80m -Xmx1024m 来源: https://www.cnblogs.com/lvzhanhui/p/xiaoqiaolv_eclipse.html

Eclipse配置ADT与CDT

耗尽温柔 提交于 2019-12-26 15:49:16
下午完成Eclipse下ADT和CDT的配置: ADT在线配置: 启动 Eclipse,然后选择 Help > Software Updates… 。在出现的对话框中,单击 Available Software 选项卡。 单击 Add Site 在 Add Site 对话框的 Location 字段中输入下面的 URL: http : //dl-ssl.google.com/android/eclipse。单击 OK 。 回到 Available Software 界面,单击展开 http : //dl-ssl.google.com/android/eclipse,可以看到 URL 中包含的插件列表,其中有 Developer Tools 一项。选择 Developer Tools 旁边的复选框,单击 Install。 在接来下出现的安装窗口中,应该会出现被选中的 Android DDMS 和 Android Development Tools。单击 Next 。 阅读并接受许可协议,然后单击 Finish 。 重新启动 Eclipse ADT离线配置(有时可能出现由于firewall屏蔽的而无法在线下载ADT的情况): 下载ADT :https://developer.android.com/sdk/installing/installing-adt.html