设计模式学习—简单工厂模式

  1. 动机:统一接口
  2. 角色:
    1. 工厂角色
    2. 抽象产品角色
    3. 具体产品角色
  3. 结构:
  4. 优缺点
    1. 优点:
      1. 统一了接口:通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。
      2. 分离客户端和服务端:分离耦合
    2. 缺点:
      1. 整合了整个创建逻辑,一旦出问题,整个创建都将不能正常工作
      2. 采用静态工程,无法继承
      3. 扩展不易:没增加新产品就需要修改工厂逻辑
  5. 适用点:
    1. 负责创建的对象不多:工厂逻辑较为清晰
    2. 负责创建的类别不常变动:不需要经常修改工厂逻辑
  6. 用例:权限管理、加密处理等(如JDK中dataformat等类)





代码:
/**
 *简单工厂模式
 *适合解决对象的创建问题
 *而工厂中包含了所有的操作,所以该模式不适合经常有改动的项目中!
 */
public  class  Operation {
        private  double  numberA  ;
        private  double  numberB  ;
      
        public  double  getNumberA() {
              return  numberA  ;
      }
        public  void  setNumberA( double  numberA) {
              this . numberA  = numberA;
      }
        public  double  getNumberB() {
              return  numberB  ;
      }
        public  void  setNumberB( double  numberB) {
              this . numberB  = numberB;
      }
      
        public  double  getResult(){
              double  result=0;
              return  result;
      }
}

public  class  OperationAdd  extends  Operation {

        @Override
        public  double  getResult() {
              double  result=0;
            result=getNumberA()+getNumberB();
              return  result;
      }
}

public  class  OperationDiv  extends  Operation {

        @Override
        public  double  getResult() {
              double  result=0;
            result=getNumberA()/getNumberB();
              return  result;
      }
      
}

public  class  OperationMul  extends  Operation {
        @Override
        public  double  getResult(){
              double  result=0;
            result=getNumberA()*getNumberB();
              return  result;
      }
}

public  class  OperationSub  extends  Operation {

        @Override
        public  double  getResult() {
              double  result=0;
            result=getNumberA()-getNumberB();
              return  result;
      }      
}

public  class  OperationFactory {
        private  OperationFactory(){}
      
        public  static  Operation createOperate( int  operate){
            Operation oper=  null ;
              switch (operate){
              case  1:
                  oper=  new  OperationAdd();
                    break ;
              case  2:
                  oper=  new  OperationSub();
                    break ;
              case  3:
                  oper=  new  OperationMul();
                    break ;
              case  4:
                  oper=  new  OperationDiv();
                    break ;
            }
              return  oper;
      }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值