范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

设计模式工厂模式

  简介
  工厂模式是创建型模式的一种,也是里面需要注意的点最少的一种设计模式。通常来说,工厂模式有简单工厂、工厂方法和抽象工厂三种,其中前两种实现较为简单,后面一种比较复杂,这里先将简单工厂和工厂方法放一起,抽象工厂单独写一篇。 简单工厂
  简单工厂适用于工厂类型确定的情况,在工厂中通过传入的类型来创建对应的对象。传统的写法如下(以创建各种水果为例): 1.首先定义水果的接口和方法: public interface Fruit {     String getType(); }
  2.定义实现类(这里定义了Circle和Square) public class Apple implements Fruit{     @Override     public String getType() {         return "apple";     } }  public class Pear implements Fruit{     @Override     public String getType() {         return "pear";     } }
  3.定义一个跟图形映射的静态常量(非必须,本人习惯,这样可以避免魔鬼字符串,并且方便代码重构) public interface Type {     String APPLE = "apple";     String PEAR = "pear"; }
  4.定义图形工厂 public class FruitFactory {      public static Fruit createFruit(String type) {         if (type.equals(Type.PEAR)) {             return new Pear();         } else if (type.equals(Type.APPLE)) {             return new Apple();         }         return null;     } }
  5.客户端调用 public class Test {     public static void main(String[] args) {         Fruit fruit = FruitFactory.createFruit(Type.APPLE);         System.out.println(fruit.getType());//apple          Fruit fruit1 = FruitFactory.createFruit(Type.PEAR);         System.out.println(fruit1.getType());//pear     } } 关于简单工厂
  简单工厂应该是设计模式中最简单的一种,能满足一部分需求。该工厂最大的一个问题是违反了开闭原则,比如我现在要增加另一种水果,则必须在FruitFactory类中去增加,会修改这个类,我们辛辛苦苦加班写的代码,肯定是不想被别人去修改的。 工厂方法
  如果简单工厂能满足我们的需求,就没有必要上工厂方法了,因为工厂方法会创建多个工厂,无疑增加了我们的维护成本。对于工厂方法,我们还是以创建水果为例,假设我们的苹果和梨有两种,分别时南方的和北方的,此时我们需要南方水果工厂来创建南方的水果,北方的水果工厂来创建北方的水果。步骤如下: 1.定义水果的接口: public interface Fruit {     String returnType(); }
  2.定义南方和北方苹果和梨,实现Fruit接口 public class NorthApple implements Fruit{     @Override     public String returnType() {         return "apple from north";     } }  public class NorthPear implements Fruit{     @Override     public String returnType() {         return "pear from north";     } }  public class SouthApple implements Fruit{     @Override     public String returnType() {         return "apple from south";     } }  public class SouthPear implements Fruit{     @Override     public String returnType() {         return "pear from south";     } }
  3.定义生产水果的工厂接口 public interface FruitFactory {     Fruit createFruit(String type); }
  4.定义南方和北方的水果工厂,实现FruitFactory public class NorthFruitFactory implements FruitFactory{     @Override     public Fruit createFruit(String type) {         if (type.equals(Type.APPLE)) {             return new NorthApple();         } else if (type.equals(Type.PEAR)) {             return new NorthPear();         }         return null;     } }  public class SouthFruitFactory implements FruitFactory{     @Override     public Fruit createFruit(String type) {         if (type.equals(Type.APPLE)) {             return new SouthApple();         } else if (type.equals(Type.PEAR)) {             return new SouthPear();         }         return null;     } }
  5.客户端调用 public class Test {     public static void main(String[] args) {         FruitFactory fruitFactory = new SouthFruitFactory();         Fruit fruit = fruitFactory.createFruit(Type.APPLE);         System.out.println(fruit.returnType());//apple from south         System.out.println("-----------------------------");         FruitFactory fruitFactory1 = new NorthFruitFactory();         Fruit fruit1 = fruitFactory1.createFruit(Type.PEAR);         System.out.println(fruit1.returnType());//pear from north     } }

将win11随身携带,手把手教你用aigo固态U盘打造高速WindowsToGo北京时间6月25日,微软举行Windows11发布会,这是微软继2015年推出Windows10操作系统以来首次推出新的Windows系统,也是微软Windows系统十年来最重要的宇宙大爆炸的奇点从何而来?宇宙,只仅仅是天文地理学家假设的抽象名词,她只代表泛泛之天体是浩瀚无垠,只是为科研而设立天穹范畴。宇宙有银河系,银河系有太阳系,以众多的繁星,星球,然而各星球却是有寿命的。如果寿终筑墙还是造桥,腾讯给出了答案最近,我找到了一个新乐趣看小学生分手。不是和女朋友分手,而是和心爱的游戏分手。事情的起因还是上个周末,国家要求所有网络游戏企业仅可在周五周六周日和法定节假日每日20时至21时向未成黄仁勋的收购还没结果,苹果库克就学任正非了关注高科技产业的朋友们都知道,芯片的成品应用要经过一个相当复杂的过程,其中的设计和制造环节,从事芯片设计的企业要比专门制造的企业多。因此,长期以来的芯片制造上,全球各家中下游应用厂被批吃相难看!微信拟推出聊天记录付费云存储服务遭吐槽作为一名苦逼的社畜,微信公司群里聊天不敢错过,聊天记录不敢随便删除,就怕哪一天突然要用到,结果一看手机储存容量,微信占据了数十个G。于是,现在越来越多人买手机时较为看重的是储存容量险家闪米特的234天漂流,我也想求一款户外手表,有推荐的吗?闪米特的故事确实令人敬佩,在234天的独自漂流中,几次三番遇到生命危险,但是还是坚持完成目标,真的是户外精神最好的体现。对于户外手表,我这边推荐你一款卡西欧PROTREK全新推出的2021饮料大战巨头围剿元气森林深氪文彭倩访谈彭倩乔芊杨轩编辑杨轩这个夏季,饮料行业出现了十年未见的剑拔弩张。林浩跟人打起来了。他是元气森林某大区一位销售,为了配合618线上线下大促销的任务,在整个6月,林浩每天早上填补多项国内空白!工业和信息化部部属高校发布512项创新成果2021工业和信息化部部属高校成果发布暨对接活动现场。赵荣昊摄今天下午,2021工业和信息化部部属高校成果发布暨对接活动,在石家庄(正定)国际会展中心举办。现场发布了数字产品制造业中兴6。92寸大屏新机发布,20G运存,流畅度国产第一中兴也算是一个比较老牌的手机厂商了,虽然和华为一样都拿的同一个剧本,但是结果也不相同,中兴现在的销量相较于小米OV,无论是国内还是国外市场占有都很小,不过这两年凭借着屏下手机还是火鲁大师公布8月新机流畅榜,搭载小米MIUI12。5的MIX4竟登顶榜一在人们使用智能手机的过程中,最影响心情的大概就是卡顿掉帧不流畅了吧,尤其是玩游戏的时候,遇上手机卡顿分分钟能气的人原地暴走。而决定手机流畅度的主要有两个因素,一个是处理器,还有一个2款新国标电动车来了,可上牌照,一次充电还能跑100公里近年来,各地对电动车监管力度加大,而很多无法上牌的电动车面临着无法上路的风险。因此,很多用户在挑选电动车时,会优先考虑车辆能否上牌上路。而对此,行业又新推出了2款可上牌的新国标电动
机构论市新能源等成长赛道受阻低估值板块迎来配置良机巨丰投顾新能源等成长赛道受阻低估值板块迎来配置良机对于新能源赛道的下跌,一方面是宏观因素,主要还是美联储加息预期下科技股承压,进而对A股成长股的压制另一方面,产业上看,2021年1人工耳蜗是怎么回事?谢谢邀请!简单来说,人工耳蜗是一种人造的具有人耳功能装置。是一种能将声音转换成电流并被听觉神经感应到的声电装置。其工作原理为麦克风接受声音信号后,将其通过言语转换器进行数字编码,再全中国用什么牌子手机的最多?蓝厂和绿厂(vivo和OPPO)如果论蓝厂和绿厂的终端店数量,应该是当之无愧的第一,尤其在二三线城市以及县级城市,覆盖率惊人,自然用户也就最多。很多人可能以为现在的人手机都是在网上低调跌至2119元,颜值最高的小米手机,如今还值得考虑吗?感谢邀请低调跌至2119元,颜值最高的小米手机,如今还值得考虑吗?如果你说的是CIVI我觉得还不错,值得去考虑。毕竟走颜值系列的机型,基本上配置都是如此。之前的小米只是没有重视这个两年前发布的华为Mate40Pro,放在2022年,算什么级别的手机?这段时间大家都把目光放在一个接一个发布的骁龙8Gen1旗舰手机上,对之前发布的老旗舰正在渐渐遗忘,比如华为Mate40Pro5G这款手机,它发布于2020年底,从时间上来说,这款手这台iPhone13Pro只要5500元,但坚决不能买!容易被反锁今天网友给我发来几张照片,让我帮忙看看这台iPhone13Pro能不能买。这台iPhone13Pro的价格非常便宜,只要5500元。只看描述就知道这台iPhone13Pro不能买(iOS15。2到底值不值得升级?不吹不黑,全谈真实使用感受分享手机小技巧,传递科技新知识,大家好,欢迎来到科技办公室!距离上一次苹果iOS系统更新,已经是20多天之前了,经过这么长时间的体验,很多朋友还在纠结,iOS15。2到底值不值得升中国网络去依附的思考近期有网红和专家大讲2022年中美网络战争,他们的逻辑距离学术实在太过遥远,没有令人信服的事实奠基,实属纯粹的商业行为。中美之网络问题无限错综复杂,作为一名研究美国Internet在公司用手机通过4G网络,上网内容可能被公司监控吗?在公司用手机通过4G网络上网,上网内容可能被公司监控吗?计算机网络学习从入门到精通通过4G聊微信,逛淘宝等,公司有可能通过技术手段监控到吗?如果视频监控也算技术手段,公司可以监控到第三代iPhoneSE新机曝光,SE2沦为牺牲品价比百元机1月9日,据彭博社Gurman报道,苹果已经在计划2022年的首场发布会。他认为,苹果目前正在为3月或4月的发布会做准备,届时将推出支持5G网络的iPhoneSE机型。在最新一期的对付骗子神器骗子太多了,没证据怎么办,不如佩戴随身录像机,走到哪里录到哪里!这样就有证据了。专业录像机1080P摄像机背夹录音笔录像神器执法记录仪高清防抖摄影机骑行DV家用设备运动相机摄影头一