您申请加入课程:软件构造

软件构造

华南师范大学软件工程专业

https://www.scholat.com/course/rjgz
  • 创建者

    Creator

    潘家辉
  • 活跃度

    Activeness

  • 访问量

    Visits

    76275

教学公告

21软工第1周安排
[作者: 潘家辉  发布时间:2024-02-26 20:04:31  浏览次数:726次]

一、教学安排

自学第2章的内容 24-47页

讲授第3-4章的内容48-66页

实验作业(双周才布置)在学者网课程平台:

http://www.scholat.com/course/rjgz

二、重点难点

1、设计模式的起源、定义、以及作用

2、理解软件构造与设计模式的关系

3、理解创建型模式

4、简单工厂模式的结构和分析

三、课前思考

小明到A公司进行笔试,题目如下:

请用C++、Java、Python或C#任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符,得到结果。

四、师说

总有人疑惑:优秀的技术架构和平庸的,区别在哪里?确实,从开发到上线,似乎没什么区别,都能跑业务。但优秀的技术架构,可以让后续的运营,维护变得更简单,更便捷。

我们平时说的扩展性更好,包括两个层面:一是用户量、访问频次、数据规模增加后的扩展性;二是新的业务诉求和运营诉求的扩展性。理解这一点,就能明白:为什么优秀的技术研发能力,可以让企业发挥更大的价值。

回归技术,其实就是强调无数次的高复用、低耦合。有人说,这不是架构师的范畴么。架构师的确需要这样的概念和设计准则,但普通的研发工程师,难道就不需要了么?很多程序员都卡在了这个环节上,代码的可维护性、扩展性差。说起来,老板要的功能也都实现了,但只要稍微提出点新诉求,或面对一些更复杂的场景,就牵一发而动全身,到处都得修补删改。

重构,重构,还是重构,想想就崩溃。设计能力上不去,重构也仅仅能解决新诉求、新场景的问题,这样的重构,能坚持多久?而这些,就是设计模式要解决的问题。

如果你写了多年代码,编程功力却长进不大,面临稍复杂的代码设计和开发,写出的代码不仅杂乱,扩展性也很差。那你真该好好想一想,自己的认知和知识体系中,是否缺乏了设计模式这个环节。

要知道,代码光“够用”是远远不够的,还要“好用”。如果说数据结构和算法是教你如何写出高效的代码,那设计模式讲的就是如何写出可扩展、可读、可维护的高质量代码。算法 + 设计模式,奠定了一个工程师最基本的代码能力。

所以,设计模式与编码密切相关,能直接提高你的开发能力,是实打实的硬核技能。而且,设计模式更是大厂面试中的高频问题,大厂更加重视候选人的基本功,毕竟你代码写的好,后续的运营维护才会更简单、更敏捷。

从上面可知,设计模式是软件工程师的必备技能之一,在各种面试宝典里面是经常看到的,这意味着公司在面试过程(特别是编程面试)中会有非常大的几率碰到相关的题目。实际上,编程能力和设计技巧是对彼此很好的补充。一个好的程序员通常都是一个好的软件设计人员。他们知道怎么把一个问题分割成一段段代码或者软件设计,但这些能力和技巧并不能凭空而来。本学期课程的核心内容就是掌握熟悉GoF 23种设计模式,让大家从另外一个维度去理解面向对象设计的6大原则。

这23种设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性,以及类的关联关系和组合关系的充分理解。当然,软件设计模式只是一个引导,在实际的软件开发中,必须根据具体的需求来选择。个人觉得,通俗地说,有3点是大家需要理解的:

1、设计模式是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。

2、对于简单的程序,可能写一个简单的算法要比引入某种设计模式更加容易。但是对于大型项目开发或者框架设计,用设计模式来组织代码显然更好。

3、本学期讲解的软件设计模式,用Java语言为例进行讲解,但是设计模式并不是 Java 的专利,它同样适用于 C++、Python、C#、Javascript 等其它面向对象的编程语言。

五、阅读材料

23种设计模式-6大原则

https://www.cnblogs.com/welan/p/9005019.html

如何给女朋友解释什么是面向对象编程?

https://baijiahao.baidu.com/s?id=1626333751993181194&wfr=spider&for=pc


相关课程

扫一扫二维码,快速加入本课程!

放大二维码 查看使用方法
关闭