前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >salesforce 零基础开发入门学习(十四)salesforce中工厂模式的运用

salesforce 零基础开发入门学习(十四)salesforce中工厂模式的运用

作者头像
Zero-Zhang
发布2018-01-05 10:55:43
6290
发布2018-01-05 10:55:43
举报

提到工厂模式,想必大家都很熟悉,工厂模式作为一种设计模式,同样在salesforce中适用。

 举一个例子,笔作为基类,可以有钢笔,铅笔,圆珠笔等等。有一个笔的工厂,当你向它要钢笔,它就会生产一支钢笔;当你向他要铅笔,它就会生产一直铅笔。

根据上述描述,我们可以发现以下几点:

1.需要有一个笔的基类,并封装相应公有方法;

2.需要有相关的笔的子类,继承基类并实现公有方法并拓展相关自身方法;

3.有一个工厂,通过传递参数来确定实例化何种笔。

基类:Pen

代码语言:javascript
复制
1 //类似于java中的abstract
2 public abstract class Pen {
3     //定义getPenName方法,实现类需要实现此方法
4     public abstract String getPenName();
5 }

子类定义两个,Pencil 以及Gel Pen并实现getPenName方法。

子类:Pencil

代码语言:javascript
复制
1 public class Pencil extends Pen{
2     override public String getPenName() {
3         return 'Pencil';
4     }
5 }

子类:GelPen

代码语言:javascript
复制
1 public  class GelPen extends Pen{
2     override public String getPenName() {
3         return 'GelPen';
4     }
5 }

定义一个常量类,存储static final类型,便于类之间调用:Sys_Constants

代码语言:javascript
复制
1 public without sharing class Sys_Constants {
2     
3     public static final String CATEGORY_PENCIL = 'pencil';
4     
5     public static final String CATEGORY_GEL_PEN = 'gelPen';
6     
7 }

工厂类,用于提供相应create方法创建Pen:PenFactory

代码语言:javascript
复制
 1 public class PenFactory {
 2     public static Pen create(String penCategory) {
 3         Pen tempPen = null;
 4         if(penCategory != null) {
 5             if(penCategory.trim().equals(Sys_Constants.CATEGORY_PENCIL)) {
 6                 tempPen = new Pencil();
 7             } else if(penCategory.trim().equals(Sys_Constants.CATEGORY_GEL_PEN)) {
 8                 tempPen = new GelPen();
 9             }
10         }
11         return tempPen;
12     }
13 }

测试:在匿名块中进行工厂创建测试:

代码语言:javascript
复制
1 Pen pencil = PenFactory.create(Sys_Constants.CATEGORY_PENCIL);
2 if(pencil != null) {
3     System.debug(pencil.getPenName());
4 } else {
5     System.debug('工厂创建铅笔失败');
6 }

输出结果为:Pencil.

总结:设计模式与语言无关,其他设计模式理论上也可以适用于salesforce。具体哪种模式有什么好处,请自行查看相关设计模式的图书。

如果内容有错误的地方,希望大神指出,如果有问题可以留言。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-04-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档