17软件工程《软件构造》第3周安排
一、教学安排
讲授第7章的内容106-118页
自学第8章的内容 119-122页
导学视频资料在砺儒云课堂:
https://moodle.scnu.edu.cn/course/view.php?id=9522
实验作业在学者网课程平台:
http://www.scholat.com/course/rjgz
二、重点难点
1、理解单一职责原则、里氏代换原则、开闭原则
2、建造者模式中指挥者类的作用
3、掌握中如何编程实现建造者模式
4、介绍建造者模式的钩子方法
5、熟练掌握原型模式的结构
大家可以根据自己的情况进行相应的预习
三、课前思考
公司准备开发一款名为《群侠传》的网络游戏,该游戏采用主流的RPG模式,玩家可以在游戏中扮演虚拟世界中的一个特定角色,不同类型的游戏角色,其性别、脸型、服装、发型等外部特性都有所差异,例如“天使”拥有美丽的面容和披肩的长发,并身穿一袭白裙;而“恶魔”极其丑陋,留着光头并穿一件刺眼的黑衣。公司要求小明开发一个小工具来创建游戏角色,可以创建不同类型的角色并可以灵活增加新的角色。
思考1:如果没有指挥者类Director,客户端将如何构建复杂产品?
思考2:建造者模式与工厂模式的区别?
思考3:能否将原型模式的代码中的clone()方法写成: public Prototype clone() { return this; }?给出你的理由。
四、师说
我们先说一个生活中的小例子,当我们在外面饭店吃饭时,比如点个水煮肉片,这家店可能会辣一点、那家店可能会咸一点、对面那家可能放青菜、隔壁那家可能放菠菜,每家店做出来的都不一样,明明都是水煮肉片却有不同的做法,如果都一样就不会说这家难吃那家好吃了。
那再看快餐店,比如KFC,我们点个新奥尔良烤鸡腿堡,所有人不管在哪个城市哪家店,做法、味道都是一样的,为什么呢,因为它用料、时间、温度等等都是严格规定的,我们只需要下订单就行了,这就是一个建造者模式。一句话概括就是,将对象复杂的创建过程与表示分离,这样适用同样的构建过程创建不同的对象。
同样地,以我们KFC点餐为例,我们可以点一个汉堡和一个冷饮,汉堡可以是鸡肉汉堡、牛肉汉堡等等,总之是装在盒子中的,冷饮可以是可乐、奶茶等等,反正是装在瓶子中的。下面我们来用建造者模式对其进行组合,用户只需提交订单即可,UML图如下:
五、阅读材料
对工厂模式与建造者模式的个人理解?https://blog.csdn.net/MonkeyD5/article/details/73478940?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task