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命名空间中 ...
随机推荐
- 配置MySQL数据库
一.配置MySQL数据库 1.解压绿色版mysql,如下图 二.安装服务 1.运行cmd(管理员版本,否则没有权限),如下图 2.运行命令mysqld –install安装服务,如下图: 如果不需要m ...
- Redis多机常用架构-主从
本文内容摘录自同事Perry Zhang的讲解,如需转载须本人同意. 1.主从 命令:slaveof <IP><PORT> redis主从配置:redis支持master-sl ...
- ExecutorService中submit和execute的区别(转)
在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动.调度.管理线程的一大堆API了.在Java5以后,通过Executor来启动线程比用Thread的start()更好.在新特征中 ...
- setenv.bat
@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor lic ...
- 解决Chrome重启后插件被禁用的问题
下载组策略模版,添加白名单 http://pan.baidu.com/s/1o88kcZo 打开组策略 win+r 打开运行,输入 gpedit.msc 添加模版 右键 ->管理模版 -&g ...
- hdu 1394 Minimum Inversion Number(树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:给你一个0 — n-1的排列,对于这个排列你可以将第一个元素放到最后一个,问你可能得到的最 ...
- OpenMP之数值积分(求圆周率Pi)(sections)
// Pi.cpp : 定义控制台应用程序的入口点. //求圆周率PI #include "stdafx.h" #include <windows.h> #includ ...
- 在浏览器的JavaScript里new Date().toUTCString()后,传递给C# DateTime().TryParse()会发生什么?
Format 1. Sun, 09 Oct 2016 13:24:35 GMT Format 2. Sun, 9 Oct 2016 13:36:09 UTC Format 1 是在IE里面产生的(Wi ...
- Android 事件拦截机制一种粗鄙的解释
对于Android事件拦截机制,相信对于大多数Android初学者是一个抓耳挠腮难于理解的问题.其实理解这个问题并不困难. 首先,你的明白事件拦截机制到底是怎么一回事?这里说的事件拦截机制,指的是对触 ...
- DownloadManager
在androi中,volley适合小文件的获取和大并发,如果支持大文件的下载可以用Android原生的DownloadManager.DownloadManager默认支持多线程下载.断点续传等. 基 ...