salesforce 零基础开发入门学习(十四)salesforce中工厂模式的运用
提到工厂模式,想必大家都很熟悉,工厂模式作为一种设计模式,同样在salesforce中适用。
举一个例子,笔作为基类,可以有钢笔,铅笔,圆珠笔等等。有一个笔的工厂,当你向它要钢笔,它就会生产一支钢笔;当你向他要铅笔,它就会生产一直铅笔。
根据上述描述,我们可以发现以下几点:
1.需要有一个笔的基类,并封装相应公有方法;
2.需要有相关的笔的子类,继承基类并实现公有方法并拓展相关自身方法;
3.有一个工厂,通过传递参数来确定实例化何种笔。
基类:Pen
- //类似于java中的abstract
- public abstract class Pen {
- //定义getPenName方法,实现类需要实现此方法
- public abstract String getPenName();
- }
子类定义两个,Pencil 以及Gel Pen并实现getPenName方法。
子类:Pencil
- public class Pencil extends Pen{
- override public String getPenName() {
- return 'Pencil';
- }
- }
子类:GelPen
- public class GelPen extends Pen{
- override public String getPenName() {
- return 'GelPen';
- }
- }
定义一个常量类,存储static final类型,便于类之间调用:Sys_Constants
- public without sharing class Sys_Constants {
- public static final String CATEGORY_PENCIL = 'pencil';
- public static final String CATEGORY_GEL_PEN = 'gelPen';
- }
工厂类,用于提供相应create方法创建Pen:PenFactory
- public class PenFactory {
- public static Pen create(String penCategory) {
- Pen tempPen = null;
- if(penCategory != null) {
- if(penCategory.trim().equals(Sys_Constants.CATEGORY_PENCIL)) {
- tempPen = new Pencil();
- } else if(penCategory.trim().equals(Sys_Constants.CATEGORY_GEL_PEN)) {
- tempPen = new GelPen();
- }
- }
- return tempPen;
- }
- }
测试:在匿名块中进行工厂创建测试:
- Pen pencil = PenFactory.create(Sys_Constants.CATEGORY_PENCIL);
- if(pencil != null) {
- System.debug(pencil.getPenName());
- } else {
- System.debug('工厂创建铅笔失败');
- }
输出结果为:Pencil.
总结:设计模式与语言无关,其他设计模式理论上也可以适用于salesforce。具体哪种模式有什么好处,请自行查看相关设计模式的图书。
如果内容有错误的地方,希望大神指出,如果有问题可以留言。
salesforce 零基础开发入门学习(十四)salesforce中工厂模式的运用的更多相关文章
- 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解
salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解 建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schem ...
- salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解
建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schema Builder查看表结构以及多表之间的关联关系,可以登录后点击setup在左侧搜索框输入schema ...
- 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句
salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...
- 【转载】salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载
salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载 目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新 ...
- 【转载】salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建
salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建 VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的 ...
- 【转载】salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable
salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable 本篇知识参考:https://developer.salesforce.com/trailhead/for ...
- 【转载】salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL) salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesfo ...
- salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载
目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新公司,主要做的就是salesforce,不过当时想要看一些相关资料确实比较难.为了避免想要零基础学习的人 ...
- salesforce 零基础开发入门学习(七)PickList的value值获取
之前介绍过PickList类型的声明以及赋值,但是如何取出呢?一个sObject对象可以理解为一条数据.通过sObject直接取恐怕很难做到,因为他只会显示一个值.这时候就要用到Schema命名空间中 ...
随机推荐
- CRC 冗余校验计算
(1)设G(x)为r阶,则在信息位末尾加r个0形成新信息 r=原信息位数 - 1
- 1.本周的作业请参照此文:http://www.ruanyifeng.com/blog/2015/12/git-workflow.html 制定本组项目的GitHub版本更新流程---答题者:徐潇瑞
首先,介绍一下gitflow,它是最早诞生.并得到广泛采用的一种工作流程.如果采用git flow开发流程,那么项目存在两个常设分支,一个叫主分支master,另一个叫开发分支develop.mast ...
- 【微信要跪】 iOS 应用如何完全支持 IPv6-ONLY 网络?
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- FMDB读取Datetime类型值为1970的问题
1.问题 今天使用FMDB做一个例子程序,新建的一张表有一个datetime字段,数据库有默认值,大概如下 CREATE TABLE [ConsumptionType] ([id] INTEGER P ...
- HTML5中的 Canvas
什么是Canvas? Canvas元素是HTML5的一部分,允许脚本语言动态渲染位图像.Canvas由一个可绘制地区HTML代码中的属性定义决定高度和宽度.JavaScript代码可以访问该地区,通过 ...
- Effecvive Java读书笔记(一):创建和销毁对象
I.考虑静态工厂方法替代构造器 优势:1.有清晰的方法名称,方便调用:多参数构造器易出现调用错误 2.不必每次调用都创建新对象 3.可以返回原返回类型的任何子类型 4.创建参数化类型实例的时候,代码简 ...
- vb小菜一枚-----了解“类型推理”
局部类型推理 (Visual Basic) Visual Studio 2013 其他版本 Visual Basic 编译器使用类型推理来确定未使用 As 子句声明的局部变量的数据类型. 编译 ...
- XStream学习笔记
XStream 所需jar包: xstream-1.3.jar xpp3_min-1.1.4c.jar xmlpull-1.1.3.1.jar 目录: 1.注解去除,标签中带有包名的节点 2.注解修改 ...
- C/C++头文件一览
C.传统 C++ #include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> ...
- [原] XAF 如何啟用ListView橫向滾動條
using System; using DevExpress.ExpressApp; using DevExpress.ExpressApp.Win.Editors; using DevExpress ...