• 关于简单工厂模式的理解和分析


      最近开始看了一本书,叫《大话设计模式》,真心感觉自己收益匪浅。因此写一些博客总结一下。

      今天我来总结第一章,叫简单工厂模式。其思维目录如下所示。

      1、面向对象比面向过程的优势

      2、实例分析

      3、面向对象中三大思想模式分析

            3.1 封装性

            3.2 继承性和多态性

      4、实例分析

      5、简单工厂模式

      6、实例分析

      7、代码优化时遵循的原则

      1、面向对象比面向过程的优势

      答:首先面向过程的好处就是可以直接操作,不需要像类一样实例化,这样比较少内存。所以一般用于单片机,或者一些芯片的开发中(不过说老实话,我觉得从难度来说,学驱动比学软件更麻烦)。

        而面向对象有什么好处呢?简单来说就是可以进行增删改查,而且各个模块之间可以互不干扰。一个好的程序之间应该是互不干扰的,这样即使其中有一个功能变动了,也不能影响另一个模块。

        所以如果我们在学校开发单一功能以及对功能程度要求不高的时候使用面向过程是完全没有问题的,但是到了公司中,每个人单独负责一个模块,面向过程的思想就显得有些过时了,因此我们要采用新的思维方式,就是面向对象的方法。

      2、实例分析

      答:好,看完了理论我们来总结一个实例,举一个计算器的例子,如果我们使用面向过程的思想我们要怎么写呢?我们肯定是分成三个部分,首先是写输入数据,逻辑计算,输出结果。而且三个部分写道一起,这就是一个未出学校的学生写出来的代码,从实现功能的角度来说没有问题,但是如果放到公司上就有问题了。比如说,如果我要求把逻辑计算的部分代码移植到一个新的平台上你要怎么办?如果我要求在计算器原有的功能中加一个开方的功能怎么写?因为如果你写道原来的代码中可能会影响其他代码。而这些问题都可以用面向对象的思想来解决。

      3、面向对象中三大思想分析

      答:那么到底什么是面向对象呢?简单来说面向对象思想体现在三大部分,分别是封装性,继承性,多态性。

      3.1 封装性

      答:好,我们首先来说一下封装性,封装性的目的是什么呢?我认为封装性最大的好处就是代码的可复用性。就是说如果我们这个功能做好了,封装成一个函数,如果另一个平台有需要,直接移植到其他平台就可以了。而不影响其他功能需求。

      3.2 继承性和多态性

      答:这两个特性我们一定要一起说。为什么呢?因为封装是多态的基础。没有封装就不可能有多态。而多态是封装的应用。如果没有多态那么继承也就没啥意思了。而这两个思想要解决什么呢?答案就是可修改性和课增加性。也就是说如果其中有一个功能进行修改或添加一个功能,使用这两个就可以在不影响其他模块或功能的代码基础上实现。

      4 实例

      答:好,针对以上原理我们举一个实例分析。还是举上面那个计算器的例子吧。

      4.1 封装性实例分析

      答:好,如前面那个问题所问,如果我们把其中逻辑运算的代码移植到其他功能上该怎么做呢?很简单,把输入,逻辑运算和输出全部封装成三个函数,这样只要其中一段代码,就能成功了。

      4.2 继承性和多态性分析

      答:好,如前面那个问题所问,我们要如何写一段代码保证添加一个开方功能而不影响其他原始功能呢?我们可以这样。因为输入和输出这两个功能都是共通的,那么我们可以这样,设计一个父类,里面有三个功能,输入,计算,输出。然后使用继承的方法同时重写计算这个函数,这样就可以了。而在使用上,我们采用多态的方法指向这个子类,这样就可以保证不影响其他功能的情况下使用这个类了。但是这有一个问题,就是我们怎么知道在调用的时候指向哪个子类呢?这就要用到简单工厂模式了。

      5、简单工厂模式

      答:简单工厂模式一种创建模型,简单来说就是通过创建具体类的方法来获得相关的实例类,他的优点就是可以集成,缺点就是无法上下级扩展,如果创建对象过多容易导致崩溃(跟SVN差不多,统一管理)。

      6、实例分析

      答:回到上面那个程序,我们可以写一个函数,里面通过switch和case创建实例(通过输入的符号),这样就能把具体的实例分爱了。

      7、代码规范遵循的原则

      答:代码规范要包含两点,架构和内容。架构里面有解释说明,头文件,命名空间,结束符等等。内容包括文件,类名,变量的命名和内容等等。

      好,今天就总结到这了。

  • 相关阅读:
    Java Character类
    JavaMath&Number类
    oracle中创建数据库实例
    Jenkins安装和配置
    crontab计划 -计划任务和日志管理
    centos修改默认字符编码为GBK(服务器端java GBK字符乱码)
    使用vsphere client 克隆虚拟机
    建索引让SQL飞起来
    oracle中对LONG列进行查询
    优化sql,返回行数少情况下,NL比hash快好多
  • 原文地址:https://www.cnblogs.com/songyuchen/p/12677916.html
Copyright © 2020-2023  润新知