首页 文章 精选 留言 我的

精选列表

搜索[android studio],共10000篇文章
优秀的个人博客,低调大师

Android Ap 开发 设计模式第四篇:工厂方法模式

Factory Method Pattern 模板模式的衍生品? 以Template Method Pattern 架构获取产生对象实例的工厂就是Factory Method Pattern。 工厂方法模式在父类规定对象的创建方法,但并没有深入到较具体的类名。所有具体的完整内容 都放在子类。根据这个原则,我们可以大致分成产生对象实例的大纲(框架)和实际生产对象实例的类两方面。 场景模拟 以一个工厂进厂打工为原型,工人们进厂须先登记信息,由所登记的信息进入创建工卡,工人们每天进厂必须使用工卡打卡,开始一天的劳动。以此为例,进行编程,设计UML图如下: 程序实现 抽象类Product定义抽象方法create ()表示创建用工card 信息和use () 表示用户使用card 抽象类Factory实现方法create 的抽象类,这里就是我们上文所说的为什么是模板方法模式衍生品。和定义抽象方法createProduct()、抽象方法registerProduct() 交由子类负责完成 。 类IDcard 继承自Product 实现方法use 和create 类IDCardFactory 继承 自Factory 实现方法createProduct、registerProduct Product 抽象类 public abstract class Product{ public abstract Stringcreate(); public abstract Stringuse(); } Factory 抽象类 public abstract class Factory{ public finalProductcreate(Stringowner){ Productp = createProduct(owner); registerProduct(p); return p; } protected abstract ProductcreateProduct(Stringowner); protected abstract void registerProduct(Productproduct); } IDCard 类 public class IDCardextendsProduct{ private Stringowner; public IDCard(Stringowner){ // TODOAuto-generatedconstructorstub this .owner = owner; } @Override public Stringuse(){ // TODOAuto-generatedmethodstub return " 使用 " + owner + " 的卡 " ; } public StringgetOwner(){ return owner; } @Override public Stringcreate(){ // TODOAuto-generatedmethodstub return " 建立 " + owner + " 的卡 " ; } } IDCardFactory 类 public class IDCardFactoryextendsFactory{ private Vector < String > owners = new Vector < String > (); @Override protected ProductcreateProduct(Stringowner){ // TODOAuto-generatedmethodstub return new IDCard(owner); } @Override protected void registerProduct(Productproduct){ // TODOAuto-generatedmethodstub owners.add(((IDCard)product).getOwner()); } public Vector < String > getOwners(){ return owners; } } 界面代码实现 FatoryMethodActivity: public class FatoryMethodActivityextendsActivityimplementsOnClickListener{ /* *Calledwhentheactivityisfirstcreated. */ @Override public void onCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); ((Button)findViewById(R.id.Button01)).setOnClickListener( this ); } @Override public void onClick(Viewv){ // TODOAuto-generatedmethodstub Factoryfactory = new IDCardFactory(); Productcard1 = factory.create( " terry " ); Productcard2 = factory.create( " paul " ); Productcard3 = factory.create( " jim " ); ((EditText)findViewById(R.id.EditText01)).setText(card1.create() + " , " + card1.use() + " \n " + card2.create() + " , " + card2.use() + " \n " + card3.create() + " , " + card3.use()); } } 最终实现效果: 代码下载: 工厂方法模式 本文转自 terry_龙 51CTO博客,原文链接:http://blog.51cto.com/terryblog/609318,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android内存优化13 内存泄漏常见情况4 资源未关闭泄漏

资源未关闭或释放导致内存泄露 在使用IO、File流或者Sqlite、Cursor等资源时要及时关闭。这些资源在进行读写操作时通常都使用了缓冲,如果及时不关闭,这些缓冲对象就会一直被占用而得不到释放,以致发生内存泄露。因此我们在不需要使用它们的时候就及时关闭,以便缓冲能及时得到释放,从而避免内存泄露。 1.数据库的cursor没有关闭。 操作Sqlite数据库时,Cursor是数据库表中每一行的集合,Cursor提供了很多方法,可以很方便的读取数据库中的值, 可以根据索引,列名等获取数据库中的值,通过游标的方式可以调用moveToNext()移到下一行 当我们操作完数据库后,一定要记得调用Cursor对象的close()来关闭游标,释放资源。 2,未关闭InputStream/OutputStream。 3,Bitmap对象不在使用时调用recycle()释放内存 4,BraodcastReceiver,ContentObserver,File,Cursor,Stream,Bitmap 本文转自 一点点征服 博客园博客,原文链接:http://www.cnblogs.com/ldq2016/p/8473599.html,如需转载请自行联系原作者

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册