[设计模式]1. 模板设计模式

画类图的设计模式你能记住吗?

画类图的设计模式你能知道什么情况下用吗?

我不画类图,我不讲框架,我只讲故事。

1. 场景

关键字:组件

我是个学电路的,我呢想造个模块卖出去,比如GPS模块,别人拿到我的模块就能拿到经纬度数据,我怎么办呢?

我总不能把电路图给别人吧,那谁还买我的模块呢! 我就把自己的电路封装到这么一个集成电路中,只给别人流出接口即可,比人想用你的模块,就得实现你的接口。

有时候你这种组件比较大,比如:电脑主板(如下图),电脑主板生产商可不给你生产CPU,内存的,他只是给你留了个CPU和内存的接口(看看下图),我自己搞一个CPU或者内存,只要跟主板的接口一样,插上去,也可以使用了。但人家主板怎么用你的CPU内存,你不知道吧,对喽,人家集成进去了,不让你看。也就是说,厂商把需要你自己实现的组件留一个接口出来,把对组件的调用封装起来。

想想现实生活中,主板生产商(如:华硕,技嘉,微星,升技,映泰) + 硬盘(希捷,西部数据)+CPU(因特尔,高通)… ===> PC,这个===过程就是电脑集成,比如:联想,IBM等,所谓的攒机的。如果你站在主板生产商的记住看,理解一下模板

[设计模式]1. 模板设计模式[设计模式]1. 模板设计模式

 

2.案例解决

能认识下面这些东西吧

[设计模式]1. 模板设计模式

  • 从0到1构建:

比如: 我做个电机,电机输入时电,输出的是动力。电机内部当然我不想让客户自己动,但输入的电力和输出的动力需要用户自己来设计,你是驱动啥呢?用户把轴上连接叶片就是风扇,连上刀片就是豆浆机,连上车轱辘就是电动车。

代码实现:(Java语法)

1. 电机为Abstract类,需要输入输出的作为abstract方法,需要输入的作为参数。

2. 电风扇类集成电机类,实现abstract方法,即可。

  • 重构现有代码:

比如:我有电风扇,豆浆机,电动车。发现他们都是:接通电源,启动,输出动力。那么我们就可以把这些共性提出来。

 

3. 实现一:继承Abstract类

对比一下实现,想想上面的例子,Engine1类是不是提出的组件,GPS模块。

[设计模式]1. 模板设计模式[设计模式]1. 模板设计模式

调用:

ElectricFan1 fan1 = new ElectricFan1();

fan1.setEle(new Object());

fan1.start();

逻辑:这种方式电机是风扇的一部分。

 

4. 实现二:扩展接口

[设计模式]1. 模板设计模式

[设计模式]1. 模板设计模式

[设计模式]1. 模板设计模式

[设计模式]1. 模板设计模式

 

这个是以计算机为主的

5.比较:

不比较了,自己体会吧。