[设计模式]1. 模板设计模式
画类图的设计模式你能记住吗?
画类图的设计模式你能知道什么情况下用吗?
我不画类图,我不讲框架,我只讲故事。
1. 场景
关键字:组件
我是个学电路的,我呢想造个模块卖出去,比如GPS模块,别人拿到我的模块就能拿到经纬度数据,我怎么办呢?
我总不能把电路图给别人吧,那谁还买我的模块呢! 我就把自己的电路封装到这么一个集成电路中,只给别人流出接口即可,比人想用你的模块,就得实现你的接口。
有时候你这种组件比较大,比如:电脑主板(如下图),电脑主板生产商可不给你生产CPU,内存的,他只是给你留了个CPU和内存的接口(看看下图),我自己搞一个CPU或者内存,只要跟主板的接口一样,插上去,也可以使用了。但人家主板怎么用你的CPU内存,你不知道吧,对喽,人家集成进去了,不让你看。也就是说,厂商把需要你自己实现的组件留一个接口出来,把对组件的调用封装起来。
想想现实生活中,主板生产商(如:华硕,技嘉,微星,升技,映泰) + 硬盘(希捷,西部数据)+CPU(因特尔,高通)… ===> PC,这个===过程就是电脑集成,比如:联想,IBM等,所谓的攒机的。如果你站在主板生产商的记住看,理解一下模板
2.案例解决
能认识下面这些东西吧
-
从0到1构建:
比如: 我做个电机,电机输入时电,输出的是动力。电机内部当然我不想让客户自己动,但输入的电力和输出的动力需要用户自己来设计,你是驱动啥呢?用户把轴上连接叶片就是风扇,连上刀片就是豆浆机,连上车轱辘就是电动车。
代码实现:(Java语法)
1. 电机为Abstract类,需要输入输出的作为abstract方法,需要输入的作为参数。
2. 电风扇类集成电机类,实现abstract方法,即可。
-
重构现有代码:
比如:我有电风扇,豆浆机,电动车。发现他们都是:接通电源,启动,输出动力。那么我们就可以把这些共性提出来。
3. 实现一:继承Abstract类
对比一下实现,想想上面的例子,Engine1类是不是提出的组件,GPS模块。
调用:
ElectricFan1 fan1 = new ElectricFan1(); fan1.setEle(new Object()); fan1.start(); |
逻辑:这种方式电机是风扇的一部分。
4. 实现二:扩展接口
这个是以计算机为主的
5.比较:
不比较了,自己体会吧。