Android Ap 开发 设计模式第四篇:工厂方法模式
来源:互联网 发布:跃兔网络的神途哪个好 编辑:程序博客网 时间:2024/06/01 10:28
模板模式的衍生品?
以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 String create();
public abstract String use();
}
Factory 抽象类
public final Product create(String owner) {
Product p = createProduct(owner);
registerProduct(p);
return p;
}
protected abstract Product createProduct(String owner);
protected abstract void registerProduct(Product product);
}
IDCard 类
private String owner;
public IDCard(String owner) {
// TODO Auto-generated constructor stub
this.owner=owner;
}
@Override
public String use() {
// TODO Auto-generated method stub
return "使用"+owner+"的卡";
}
public String getOwner(){
return owner;
}
@Override
public String create() {
// TODO Auto-generated method stub
return "建立 "+owner+"的卡";
}
}
IDCardFactory 类
private Vector<String> owners=new Vector<String>();
@Override
protected Product createProduct(String owner) {
// TODO Auto-generated method stub
return new IDCard(owner);
}
@Override
protected void registerProduct(Product product) {
// TODO Auto-generated method stub
owners.add(((IDCard)product).getOwner());
}
public Vector<String> getOwners(){
return owners;
}
}
界面代码实现 FatoryMethodActivity:
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
((Button) findViewById(R.id.Button01)).setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Factory factory = new IDCardFactory();
Product card1 = factory.create("terry");
Product card2 = factory.create("paul");
Product card3 = factory.create("jim");
((EditText) findViewById(R.id.EditText01)).setText(card1.create()+","
+ card1.use() + "\n" + card2.create() +","+ card2.use() + "\n"
+ card3.create() +","+ card3.use());
}
}
最终实现效果:
代码下载:
工厂方法模式
发个求职信息:
本人因个人原因,会在短期间内离职,想找一份android (java、SecureCRT 、Ubuntu、烧录系统。 一年半经验,可做Framework或者Framework 以上工作,一年半经验都是车载工作,现项目己完成。目前公司行业内前三。但因个人原因可能会离职)或Windows phone 7 (C# 经验一年,Windows Phone 7 完全属于自学状态,但可以在短期内胜任岗位工作),倾向于深圳地区,但不排除外地,希望能找到好公司。邮箱:terryyhl@gmail.com 手机:15012644751
- Android Ap 开发 设计模式第四篇:工厂方法模式
- Android Ap 开发 设计模式第四篇:工厂方法模式
- Android App 开发 设计模式第四篇:工厂方法模式
- Android Ap 开发 设计模式第八篇:抽象工厂模式
- Android Ap 开发 设计模式第三篇:模板方法模式
- Android Ap 开发 设计模式
- Android Ap 开发 设计模式第九篇:桥接模式
- Android Ap 开发 设计模式第七篇:生成器模式
- Android Ap 开发 设计模式第六篇:原型模式
- Android Ap 开发 设计模式第五篇:单件模式
- Android Ap 开发 设计模式第二篇:适配器模式
- Android Ap 开发 设计模式第一篇:迭代器模式
- Android Ap 开发 设计模式第一篇:迭代器模式
- Android设计模式---工厂方法模式和抽象工厂模式
- Android设计模式系列--工厂方法模式
- android设计模式之工厂方法模式
- Android设计模式系列--工厂方法模式
- Android设计模式系列--工厂方法模式
- 由上海地铁10号线发生追尾事故所想到的
- 面试失败之24点算法
- 当0遇上0,拼人品的时候到了
- core java detail
- EonerCMS——做一个仿桌面系统的CMS(四)
- Android Ap 开发 设计模式第四篇:工厂方法模式
- MDX + T-SQL: Combining relational and multi-dimensional data into one query result set
- Mondrian 简介
- ROLAP
- Unicode汉字编码表
- jquery ajax 返回整个html页面
- 如何用搜索手段在几个小时之内深入了解一个互联网行业
- 谈站内信的数据库设计
- 世界权威调查机构发布“各大编程语言2011年9月最新使用率以及位次升降统计”