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

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

  • 相关阅读:
    sdut 2413:n a^o7 !(第三届山东省省赛原题,水题,字符串处理)
    poj 2406:Power Strings(KMP算法,next[]数组的理解)
    hrbustoj 1551:基础数据结构——字符串2 病毒II(字符串匹配,BM算法练习)
    hrbustoj 1179:下山(DFS+剪枝)
    [Linux] 通过指令修改时区 tzselect
    Ubuntu 历史版本下载
    RK3288 USB UVC camera 摄像头 VIDIOC_DQBUF Failed!!! err[I/O error]
    Android Activity活动状态及生存周期
    Android 系统四大组件
    Android JNI访问Java成员
  • 原文地址:https://www.cnblogs.com/zero-zyq/p/5381289.html
Copyright © 2011-2022 走看看