抽象工厂模式在android中使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了抽象工厂模式在android中使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3052字,纯文字阅读大概需要5分钟。
内容图文
![抽象工厂模式在android中使用](/upload/InfoBanner/zyjiaocheng/1277/968dddfd701f43ab9425baadccdd510d.jpg)
抽象工厂模式(Abstract Factory)
抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步延伸和拓展的结果。抽象工厂模式更加抽象化,更具一般性特点。
我们知道,工厂方法模式是针对单一的产品等级结构而产生的,而这里的抽象工厂模式则是针对多个产品等级结构的。当然,单一的产品等级结构也同样适用于抽象工厂模式的。下面为其具体的等级结构图说明:
从上面的结构示意图,可以看到抽象工厂模式中涉及到了多个等级结构的产品角色;同时,针对每一种产品等级结构,都有一种专门的工厂角色负责创建对应的产品,这就是抽象产品角色了。下面为涉及到相关角色说明:
A、抽象产品角色A、B、C...:该角色为产品的多个等级结构,是对应的具体产品角色的父类。
B、具体产品角色A、B、C...:该角色是与上面抽象产品对应的具体产品角色,而且每一个产品结构中的抽象产品角色与具体产品角色的关系是一对多的关系。
C、抽象工厂角色:该角色为抽象工厂角色,是所有创建产品角色的具体工厂角色的父类。该角色是模式中的核心方法类,里面声明了创建不同等级结构产品的方法。
D、具体工厂角色A、B、C...:该角色为具体创建产品等级结构的工厂角色,它与抽象工厂角色是多对一的关系,也是直接与具体产品接触的创建角色。
我们知道了抽象工厂模式的原理,那么接下来就直接通过例子来说明它的使用,毕竟能够正确使用它才说明真正的懂得了它的原理。
例子是这样的,在产品模块中有两个产品的等级结构(当然可以是多个),分别为套餐和娱乐。在每类产品结构中都对应有类目标题,比如:上网套餐和分享娱乐(这个在实际的产品中出现过)。
好了,下面就是我的具体代码:
抽象产品角色(套餐):
public abstract class Meal {
StringmealName;
int mealNo;
float mealPrice;
public String getMealName() {
return mealName;
}
public void setMealName(String mealName) {
this.mealName = mealName;
}
public int getMealNo() {
return mealNo;
}
public void setMealNo(int mealNo) {
this.mealNo = mealNo;
}
public float getMealPrice() {
return mealPrice;
}
public void setMealPrice(float mealPrice) {
this.mealPrice = mealPrice;
}
@Override
public String toString() {
return "Meal[mealName=" + mealName + ", mealNo=" + mealNo
+", mealPrice=" + mealPrice + "]";
}
}
具体产品角色(普通套餐):
public class CommonMeal extends Meal {
public CommonMeal() {
setMealName("普通上网套餐");
setMealNo(1);
setMealPrice(20.0f);
}
}
具体产品角色(高速套餐):
public class SpeedMeal extends Meal {
public SpeedMeal() {
setMealName("高速上网套餐");
setMealNo(2);
setMealPrice(30.0f);
}
}
抽象产品角色(分享娱乐):
public abstract class Entertainment {
StringetName;
int etNo;
StringetType;
public String getEtName() {
return etName;
}
public void setEtName(String etName) {
this.etName = etName;
}
public int getEtNo() {
return etNo;
}
public void setEtNo(int etNo) {
this.etNo = etNo;
}
public String getEtType() {
return etType;
}
public void setEtType(String etType) {
this.etType = etType;
}
@Override
public String toString() {
return "Entertainment[etName=" + etName + ", etNo=" + etNo
+",etType=" + etType + "]";
}
}
具体产品角色(电影):
public class Movie extends Entertainment {
public Movie() {
setEtName("电影");
setEtNo(1);
setEtType("视频");
}
}
具体产品角色(小说):
public class Books extends Entertainment {
public Books() {
setEtName("小说");
setEtNo(2);
setEtType("阅读");
}
}
抽象工厂角色(套餐和娱乐):
public interface ProductFactory {
/* the method of network meal */
public Meal MealFactory();
/* the method of entertainment */
public Entertainment EtFactory();
}
具体工厂角色(工厂A):
public class ProductFactoryOne implements ProductFactory {
@Override
public Meal MealFactory() {
return new SpeedMeal();
}
@Override
public Entertainment EtFactory() {
return new Books();
}
}
具体工厂角色(工厂B):
public class ProductFactoryTwo implements ProductFactory {
@Override
public Meal MealFactory() {
return new CommonMeal();
}
@Override
public Entertainment EtFactory() {
return new Movie();
}
}
具体调用代码和工厂方法模式类似,这里不再赘述了,我的代码的运行效果图:
到这里,我们已经分析和使用完了抽象工厂模式了。
技术交流群:179914858
原文:http://blog.csdn.net/why_2012_gogo/article/details/45223129
内容总结
以上是互联网集市为您收集整理的抽象工厂模式在android中使用全部内容,希望文章能够帮你解决抽象工厂模式在android中使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。