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

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

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

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

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

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

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

基类:Pen

1 //类似于java中的abstract
2 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。具体哪种模式有什么好处,请自行查看相关设计模式的图书。

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吾爱乐享

java之学习集合带All的方法的案例分析

963
来自专栏向治洪

volatile和Synchronized区别

volatile和Synchronized区别 volatile Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进...

1638
来自专栏用户3030674的专栏

java线程的实现

一共有两种方法Thread类和Runnable接口,相对来讲,更趋向于用Runnable 因为一个类可以实现多个接口,但是只能继承一个类,所以相对来说倾向用Ru...

461
来自专栏JMCui

多线程编程学习二(对象及变量的并发访问).

一、概念 非线程安全:会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是"脏读",也就是取到的数据其实是被更改过的. 线程安全:获得的实例变...

36714
来自专栏java初学

java线程安全— synchronized和volatile

34517
来自专栏青枫的专栏

多线程常见的面试题

593
来自专栏高爽的专栏

Java线程(二):线程同步synchronized和volatile

上篇通过一个简单的例子说明了线程安全与不安全,在例子中不安全的情况下输出的结果恰好是逐个递增的(其实是巧合,多运行几次,会产生不同的输出结果),为什么会产生这...

2050
来自专栏xingoo, 一个梦想做发明家的程序员

Java程序员的日常—— 垃圾回收中引用类型的作用

在Java里面,是不需要太过于关乎垃圾回收,但是这并不意味着开发者可以不了解垃圾回收的机制,况且在java中内存泄露也是家常便饭的事情。因此了解垃圾回收的相关...

17210
来自专栏轮子工厂

Java多线程学习

提醒一下大家:main方法其实也是一个线程。在java中所以的线程都是同时启动的,至于什么时候,哪个先执行,完全看谁先得到CPU的资源。

872
来自专栏技术小黑屋

垃圾回收器如何处理循环引用

垃圾回收是一门编程语言中必不可少的一部分,不论是手动释放内存的C和C++,还是自动回收垃圾的Java和C#等语言。对于Java这样的语言,一般的开发者不强求关心...

692

扫码关注云+社区