浅谈开发模式(一)--工厂模式

想写这文章是为我复习和加深自己对阅读《大话设计模式》的理解。设计模式很多种,用法也各式各样,但是总结起来无非就是通过这些模式让你找到"封装变化"、“对象间的松散耦合、”针对接口编程“的感觉,从而设计出易维护、易扩展、易复用、灵活性好的程序。---设计模式就是面向对象编程思维的体操。

                                                                                               简单工厂模式

《大话设计模式》这本书中列举了一个非常好的例子,就是以菜鸟的面试经历引出代码规范、面向对象编程、复用、封装以及紧耦合和松耦合的概念。这个例子我觉得堪称经典。一个简单的计算器实现:

   在main方法中通过if判断实现”+“、”-“、”*“、”/“的运算。最后在控制台输出结构。这么能不能实现功能呢,那肯定的是能!因为结果的正确的。可是大家都是java是面向对象的编程语言,我们为什么不加以利用呢。

 编写程序的时候我们要考虑如下几点:

  第一点:程序的可维护性

  第二点:代码的可复用性

  第三点:程序的可扩展性

  第四点:代码的灵活性好。

  在实际应用过程中通过封装、继承、多态把程序的耦合度降低通过设计模式是程序变得更加灵活、容易修改并且易于复用。

  通过上述内容书中的菜鸟就封装了一个算法类(Operation)。里面的写法就是通过getResult的switch语句选择性的执行各种算发,然后返回结果。这种实现方式就是实现了业务和界面的分离。可是这种写法业务之间结合的太紧密,说句难听的就是你是公司新入职的同事,公司还没对你有绝对的信任,但是公司还不得不把这所有的算法交给你来维护,这样如果有坏心思的人也就可以对其他的业务算法做破坏,这是公司不愿意看到的。所以我们为了涨薪为了升职也不得不从了公司。要把业务重新封装,然后再把"+,"-,"*,"/".这个四个业务也进行封装,然后继承算法类(Operation)。上述的四个业务实现业务类(operation)的getResult方法。

  业务类(Operation),里面有NumberA和NumberB两个属性一个抽象方法getResult()方法;

  业务子类:

       OperationAdd

       OperationSub

       OperationMul

       OperationDiv

     分别实现父类getResult()方法

  上面所述的已经算是实现了业务与界面的分离、业务与业务之间分离,这个时候我们工厂也要建立起来了(实现工厂模式):

  public class OperationFactory{

     public static Operation createOperation(String opera){

    Operation opera=null;

      switch(opera){
       case:"+"

        opera=new OperationAdd();

       break;

      case:"-"

         opera=new OperationSub()

      break;

      case:"*"

          opera=new OperationMul();

      break;

      case:"/"

          opera=new OperationDiv();

      break;

      }

   return opera;

  }

}

这个工厂代码完成之后我们只需要输入符号,工厂就会自动帮我们实例化对应的对象,然后通过对台返回父类的方式实现了计算器的结果;

剩下的代码就简单了

Operation oper=Operation.createtiongFactory.createOperate("+");

oper.NumberA=1;

oper.NumberB=2;

 double result=oper.getResult();

这样业务修改就非常简单了,如果想让同事修改加法逻辑,只要给他加法类就好了!

这样一个简单的工程模式就实现了!也是我看书的后的总结,大部分也是书里的内容,希望可以对不理解的朋友有些帮助,我也加深下自己的印象。也希望通过这样的方式使自己的能力有所提升!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值