提到工厂模式,想必大家都很熟悉,工厂模式作为一种设计模式,同样在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中工厂模式的运用的更多相关文章

  1. 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解

    salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解   建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schem ...

  2. salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解

    建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schema Builder查看表结构以及多表之间的关联关系,可以登录后点击setup在左侧搜索框输入schema ...

  3. 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句

    salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...

  4. 【转载】salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载

    salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载   目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新 ...

  5. 【转载】salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建

    salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建   VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的 ...

  6. 【转载】salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable

    salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable   本篇知识参考:https://developer.salesforce.com/trailhead/for ...

  7. 【转载】salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)

    salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)   salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesfo ...

  8. salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载

    目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新公司,主要做的就是salesforce,不过当时想要看一些相关资料确实比较难.为了避免想要零基础学习的人 ...

  9. salesforce 零基础开发入门学习(七)PickList的value值获取

    之前介绍过PickList类型的声明以及赋值,但是如何取出呢?一个sObject对象可以理解为一条数据.通过sObject直接取恐怕很难做到,因为他只会显示一个值.这时候就要用到Schema命名空间中 ...

随机推荐

  1. java程序操作Geometry对象

    Geometry 空间地理对象,Oracle中存储Geometry对象的字段类型是 MDSYS.SDO_GEOMETRY,在数据库中构建Geometry对象的方法: v_pointarray MDSY ...

  2. PADSPCB权威指南-第一章 PADS软件系统(部分)(原创)

    PADSPCB权威指南-第一章(部分)豆丁地址:http://www.docin.com/p-707128286.html

  3. [收集]在iPhone桌面的应用程序图标右上角显示数字

    能够在ios桌面的程序icon右上角显示数字(badge number)的方法 在ViewController中的viewDidLoad方法中添加如下代码即可 - (void)viewDidLoad ...

  4. spring简介

    在SSH框假中spring充当了管理容器的角色.我们都知道Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语句.Struts是用来 ...

  5. AndroidStudio学习笔记-第一个安卓程序

    要带一个本科生做一部分跟安卓有点关系的项目,于是趁着机会学习一下编写安卓程序. 第一篇材料来自谷歌官方,传送门:https://developer.android.com/training/basic ...

  6. Linux内核--网络栈实现分析(四)--网络层之IP协议(上)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7514017 更多请看专栏,地址 ...

  7. DLL和LIB的一些知识点(网上搜集)

    关于lib和dll的区别如下:(1)lib是编译时用到的,dll是运行时用到的.如果要完成源代码的编译,只需要lib:如果要使动态链接的程序运行起来,只需要dll.(2)如果有dll文件,那么lib一 ...

  8. xampp开启php-debug

    [XDebug]zend_extension = "C:\xampp\php\ext\php_xdebug.dll";xdebug.profiler_append = 0;xdeb ...

  9. Bootstrap CDN推荐

    Bootstrap CDN推荐 本站实例采用的是百度的静态资源库(http://cdn.code.baidu.com/)上的Bootstrap资源. 百度的静态资源库的 CDN 服务,访问速度更快.加 ...

  10. PyCharm 3.0 发布,提供免费开源版本

    PyCharm 发布最新的 3.0 版本,该版本新特性详见: http://www.jetbrains.com/pycharm/whatsnew/index.html 该版本最主要的是提供了免费开源的 ...