博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
salesforce 零基础开发入门学习(十四)salesforce中工厂模式的运用
阅读量:4677 次
发布时间:2019-06-09

本文共 1726 字,大约阅读时间需要 5 分钟。

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

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

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

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

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

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

基类:Pen

1 //类似于java中的abstract2 public abstract class Pen {3     //定义getPenName方法,实现类需要实现此方法4     public abstract String getPenName();5 }

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

子类:Pencil

1 public class Pencil extends Pen{2     override public String getPenName() {3         return 'Pencil';4     }5 }

子类:GelPen

1 public  class GelPen extends Pen{2     override public String getPenName() {3         return 'GelPen';4     }5 }

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

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

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 }

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

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。具体哪种模式有什么好处,请自行查看相关设计模式的图书。

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



 

转载于:https://www.cnblogs.com/zero-zyq/p/5381289.html

你可能感兴趣的文章
关于手机端IOS系统微信中虚拟键盘遮挡input输入框问题的解决方案 草稿
查看>>
css3背景、边框、和补丁相关属性 (二)
查看>>
Python--小功能应用
查看>>
别做操之过急的”无效将军”,做实实在在的”日拱一卒”
查看>>
js去除范围内所有标签并显示指定字符串
查看>>
结对项目进度2
查看>>
git + git flow 的简单介绍
查看>>
Servlet详解(四)--Request与Response
查看>>
如果我们想要交换两个数字,就可以使用位运算
查看>>
求给出第 K个 N位二进制数,该二进制数不得有相邻的“1”
查看>>
P1059 明明的随机数【去重排序】
查看>>
HDU 1060 Leftmost Digit【log10/求N^N的最高位数字是多少】
查看>>
tomcat配置文件web.xml与server.xml解析--重要
查看>>
【C语言】《C Primer Plus》递归:以二进制形式输出整数
查看>>
使用框架的——好处
查看>>
如此大量的代码,但每个类里面的代码却不显得特别多,原因。。。。。。。。。。。。...
查看>>
C#特征备忘
查看>>
intelil——快捷键
查看>>
Java 面向对象 之 final 关键字
查看>>
Contact Form 7邮件发送失败的解决办法
查看>>