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

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

  • 相关阅读:
    30张图解: TCP 重传、滑动窗口、流量控制、拥塞控制
    ffmpeg rtp时间戳
    35 张图解:被问千百遍的 TCP 三次握手和四次挥手面试题
    Pinpoint 分布式系统性能监控工具
    图解正向代理、反向代理、透明代理
    实战!我用 Wireshark 让你“看见“ TCP
    IE7的增强插件:IE7Pro
    Net Core 中的HTTP协议详解
    Autofac是一个轻量级的依赖注入的框架
    关于表数据的复制插入TSQL
  • 原文地址:https://www.cnblogs.com/zero-zyq/p/5381289.html
Copyright © 2011-2022 走看看