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

来源:未知 责任编辑:智问网络 发表时间:2013-08-28 11:56 点击:

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 String create();
   
    public abstract String use();
}
 

  Factory 抽象类
 

public abstract class 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 类
 

public class IDCard extends Product{

    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 类
 

public class IDCardFactory extends Factory{

    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:
 

public class FatoryMethodActivity extends Activity implements OnClickListener {
    /** 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() + " " + card2.create() +","+ card2.use() + " "
                + card3.create() +","+ card3.use());
    }
}
 

最终实现效果:

\

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Android 完全退出程序
    • 原创:Android应用开发-Andorid歌词秀,含源码
    • android 屏幕保护
    • Android手机软件汉化教程---第四课 dex文件汉化
    • 众多Android 开源项目推荐,给力工作给力学习
    • Android Audio代码分析4
    • Android得到已安装的应用程序信息!
    • Android开发者指南(29) —— USB Host and Accessory
    • Android成长的幕后推手:工程师鲁宾
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1