`
文章列表
前面已经对工厂方法模式、抽象工厂模式、建造者模式、原型模式进行了介绍,今天要介绍的是设计模式的创建型模式的最后一个模式——单例模式。   一、单例模式动机 顾名思义,就是某个类只有一个实例,这种场景其实在软件开发中屡见不鲜,因为对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。   那么如何保证一个类只有一个实例并且这个实例易于被访问呢?定义一个全局变量可以确保对象随时都可以被访问,但不能防止我们实例化多个对象。   一个更好的解 ...
在面向对象系统中,使用原型模式来复制一个对象自身,从而克隆出多个与原型对象一模一样的对象。因为在软件系统中,有些对象的创建过程较为复杂,而且有时候需要频繁创建,原型模式通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原型模式的意图所在。   一、原型模式动机 我们来看一个例子——邮件。由于邮件对象包含的内容较多(如发送者、接收者、标题、内容、日期、附件等),某系统中现需要提供一个邮件复制功能,对于已经创建好的邮件对象,可以通过复制的方式创建一个新的邮件对象,如果需要改变某部分内容,无须修改原始的邮件对象,只需要修改复制后得到的邮 ...
前面三个都是比较简单的工厂模式,主要用于构造比较简单的对象。但无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发送机等各种部件。而对于大多 ...
写在前面 看了一下自己的博客,从15年开通(那时候大三)到现在(刚刚毕业)已经1年半了,大三开始就一直忙着各种比赛,靠熟人朋友接一些小项目,然后去年大四一年就来杭州实习,开发一个新的物流项目,然后从长沙到 ...
本文内容参考来源于:http://www.jianshu.com/p/d9143a92ad94   一、说明     在Activity中添加Fragment几乎是很多app都需要使用到的,原因就是Fragment可以在现有基础上使性能大幅度提高,并且占用内存降低,同样的界面Activity占用内存比 ...
相信现在的很多app都会对主页面的返回键做一些代码重写,有的是按两次退出,而有的是向微信,QQ那样回到系统桌面(也就是让程序进入到后台,此时程序并未被系统杀死),然后点桌面图标的时候可以让程序再次回到之前的主页面。这两天,公司的项目也要求这么做,然而在实际测试的过程发现一个很奇怪的问题:当用户用安装包安装后会提示用户是完成还是打开,当用户点完成的时候没问题,而当点打开的时候,发现按返回或者home回到桌面后,再点桌面图标进入app的时候居然又从欢迎页开始了,于是查阅一番资料后找到了解决方法,具体可参考:http://blog.csdn.net/busjb/article/details/40 ...
相信不少用过iOS的童鞋们都会对iOS的美观界面,操作友好性所折服,其实很多iOS上的效果android上也一样能实现,今天做项目的时候刚好需要用到一个类似于iOS的三级联动选择器,用来给用户选择所在地(包括省、市、区),特 ...
现在的app基本都会有一些设置界面,有些数据需要保存到服务器,而有些数据只需保存到本地,对于保存到本地的操作,相信大家一般都会使用SharedPreference实现,然后自己动手写一个设置页面,大概花了半天时间弄完了,感觉自己萌萌哒。殊不知,还有一种更为简单的方法,就是PreferenceFragment,连界面布局都不用自己写,就能实现类似于android设置界面那样的效果,关键是,省时间,我刚刚大概测试了一下,从创工程到实现效果用了不到20分钟!!!而且最大的好处是,完全符合谷歌官方推出的Material Design,整体性上非常的统一和谐。先来看看效果。    一、创建一个 ...
最近学习android的时候,用到了一些设计包的新控件,感觉不仅从外观上使应用能有一个很大的提升,而且从代码编写上也会更加方便,更加得心应手。这不,最近写一个项目的时候需要用到一个导航的样式,上方是可点击可滑动的标签,下方是可切换的fragment页面,以前可能会用tabhost、actionbar加fragment之类的方式,或者自定义布局之类的,但是这里我推荐一个官方设计包的控件,最大的好处是兼容性好。话不多说,先看效果吧。        一、导入相关的库。 由于我是用的android studio作开发工具,所以导包特别方便,下面进行详细介绍。 1.打开工程结构  2.选 ...
  前段时间学习了《第一行代码》的书,然后照着写了一遍调用手机图库的方法,发现怎么也不成功,于是查阅资料和查看作者郭霖的博客后,发现了android在API19以前和之后的方式不一样,特此进行记载。方便日后的学习。   一、活动中选择相机和图片的处理方法   /** * 实现了点击事件监听器的自定义按钮点击类,用于监听按钮点击的事件 */ class OnButtonListener implements View.OnClickListener { @Override public void onClick( ...
距离上一篇博文的时间相差近一个月,这期间由于自己的一些问题,没有坚持发文章,这里要做个自我批评,以后一定要给自己一些计划,坚持一周至少两篇。   好了,言归正传,前两篇遗留下了两个问题,第一个是九大内置对象中还有session和pageContext没有做介绍,第二个就是为什么这些对象可以不用声明直接使用呢?接下来我们一一来解决吧。   一、session对象 1、作用范围:会话期间,也就是session scope。 2、说明: (1)session对象用于存储一个用户的会话状态,也就是说,session对象是对某个用户的会话过程中的信息存储; (2)例如:购物车常使用se ...
上一篇文章列举了JSP内置对象的作用范围和当中的五个内置对象,本篇文章将进一步列举request和response内置对象的使用方法。   一、request对象 1、作用范围:请求有效。在一起完整的请求响应过程中,即request scope。 2、说明:代表由用户提交请求而出发的request对象。 3、request对象可以获取的信息: (1)建立HTML表单: <form  action=“action” method=“method” name=“name”>。。。</form> (2)用REQUEST对象处理:JSP页面将数据存放在reque ...
JSP(Java Server Page)是当今一项非常重要的动态Web开发技术,它充分继承了Java的众多优势,包括一次编写到处运行的承诺、高效的性能以及强大的可扩展能力。   一、概述 JSP内置对象是指在JSP页面系统中已经默认内置的Java对 ...
今天整理之前的项目,发现了在大二上学期的java课程设计中编写的智能拼图小游戏,觉得有意思,所以打算写篇文章和大伙分享分享。   一、项目功能 1)本游戏是一个Java语言的拼图游戏,有一个格子是空的,其他格子内随机放置由要拿来拼图的图片切割成的若干个小图片,图片的切割按照一定的公式计算,用户可以自己选择图片到游戏中,据不同的难度,按照公式会切割成不同的小图片块数(有3*3,4*4,5*5)。 2)在开始游戏之前,可以选择游戏难度后再点击“开始”菜单里的“开始游戏”,进行拼图游戏,通过将空格旁边的小图片移入空格子内(不断的移动方块),来实现拼图,直到方块一行一行的按图片的原始样子拼好 ...
在简介一文的最后,提到了一个简单工厂模式,但是它并不属于23种设计模式之一,可能是它太过于简单,又或者是它具有以下一些不足:在简单工厂模式中,只提供了一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类。 简单工厂模式最大的缺点是当有新产品要加入到系统中时,必须修改工厂类,加入必要的处理逻辑,这违背了 “ 开闭原则” 。   在简单工厂模式中,所有的产品都是由同一个工厂创建,工厂类职责较重,业务逻辑较为复杂,具体产品与工厂类之间的耦合度高,严重影响了系统的灵活性和扩展性,而工厂方法模式则可以很好地解决这一问题。   一、工 ...
Global site tag (gtag.js) - Google Analytics