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

来源:互联网 发布:跃兔网络的神途哪个好 编辑:程序博客网 时间:2024/06/01 10:28
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() + "\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, Android/Java 设计模式
标签: android, 工厂方法模式
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 2019天猫续签评分不达标怎么办 天猫店铺动态不达标不能续签怎么办 京东自提发现货有问题怎么办 京东试用成功商家不发货怎么办 在淘宝主页搜不到我的店铺名怎么办 淘宝发货单号填到别人那去了怎么办 买家申请淘宝介入后同意退款怎么办 淘宝卖家手机版购买装修模块怎么办 天猫店铺和淘宝店铺想要装修怎么办 支付宝转账银行卡卡号错误怎么办 淘宝图片空间照片全部删除了怎么办 我把淘宝图片空间照片删除了怎么办 淘宝发布宝贝怎么没知道品牌怎么办 淘宝提前确认收货了怎么办已经发货 苹果支付安全提示问题忘记了怎么办 没有在规定日期交首付款怎么办 淘宝申请退款又不想退了怎么办 淘宝申请退款后又不想退了怎么办 申请退款后如果不想退了怎么办 世纪明德申请退款但不想退了怎么办 天猫申请换货商家不换怎么办 乐视手机刷机不想清除数据怎么办 捡的苹果手机刷机了要id怎么办 苹果6plus玩王者荣耀卡怎么办 华为荣耀3c的手机内存不足怎么办 红米4x玩王者荣耀卡怎么办 华为手机荣耀10一直重启怎么办 荣耀9青春版老自动重启怎么办 手机开不开机停在华为界面怎么办 华为荣耀9老是反复的重启怎么办 华为荣耀4x老是反复的重启怎么办 手机更新系统后开不了机怎么办 荣耀畅玩7x没有4g网络怎么办 华为4x数字解锁不对中怎么办 华为手机需要解锁后才能刷机怎么办 畅玩6x锁屏壁纸黑了怎么办 指纹密码解锁的手机解不开了怎么办 客户说物流太慢了要退货怎么办 天猫买的手机商家不给发票怎么办 天猫超市下单付款后缺货怎么办 淘宝卖家填写假的单号不发货怎么办