本文实例讲述了java基于外观模式实现美食天下食谱功能。分享给大家供大家参考,具体如下:
一、模式定义
外观模式,是软件工程师常用的一种软件设计模式。它为子系统中的一组接口提供一个统一的高层接口,使子系统更容易使用。外观模式通过一个外观接口读/写子系统中的各接口的数据资源,而客户可以通过外观接口读取内部资源库,不与子系统产生交互。
二、模式举例
1. 模式分析
我们借用美食天下菜谱中制作糖醋排骨这一道菜来说明这一模式。
2. 外观模式静态类图
3. 代码示例
3.1 创建糖醋排骨接口一ispareribs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package com.demo.common;
/**
* 糖醋排骨接口
*
* @author
*
*/
public interface ispareribs {
// 准备材料
public void prepair();
// 腌制排骨
public void preserve();
// 炸排骨
public void fry();
// 调汁
public void juice();
}
|
3.2 糖醋排骨实现类一spareribs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package com.demo.common;
/**
*
* 糖醋排骨实现类
*
* @author
*
*/
public class spareribs implements ispareribs {
// 准备材料
@override
public void prepair() {
system.out.println( "1.准备猪排骨500克,葱末、姜末、酱油、花生油、白糖、醋、料酒、盐各适量..." );
}
// 腌制排骨
@override
public void preserve() {
system.out.println( "2.将排骨洗净剁成3厘米长段,用开水汆一下,捞出放盆内,加入盐、酱油腌入味..." );
}
// 炸排骨
@override
public void fry() {
system.out.println( "3.炒锅注油烧至六成热,下排骨炸至淡黄色捞出;油温加热至八成,再下锅炸至金黄色捞出..." );
}
// 调汁
@override
public void juice() {
system.out
.println( "4.炒锅留少许油烧热,下入葱花,姜末爆香,加入适量清水、酱油、醋、白糖、料酒、倒入排骨,烧开后用慢火煨至汤汁浓,排骨熟,淋上熟油,出锅即可!" );
}
}
|
3.3 创建外观接口一icookfacade
1
2
3
4
5
6
7
8
9
10
11
|
package com.demo.facade;
/**
* 外觀模式制作糖醋排骨
*
* @author
*
*/
public interface icookfacade {
// 做糖醋排骨
public void cookspareribs();
}
|
3.4 外观实现一cookfacade
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package com.demo.facade;
import com.demo.common.ispareribs;
import com.demo.common.spareribs;
/**
* 外觀模式制作糖醋排骨
*
* @author
*
*/
public class cookfacade implements icookfacade {
// 糖醋排骨排骨接口
private final ispareribs spareribs = new spareribs();
// 做糖醋排骨
public void cookspareribs() {
// 准备材料
this .spareribs.prepair();
// 腌制排骨
this .spareribs.preserve();
// 炸排骨
this .spareribs.fry();
// 调汁
this .spareribs.juice();
}
}
|
3.5 客户端测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
package com.demo;
import com.demo.facade.cookfacade;
import com.demo.facade.icookfacade;
/**
* 客户端应用程序
*
* @author
*
*/
public class client {
public static void main(string[] args) {
// 开始做糖醋排骨了!
system.out.println( "==== 开始做糖醋排骨..." );
// // 创建糖醋排骨对象实例
// ispareribs spareribs = new spareribs();
// // 准备材料
// spareribs.prepair();
// // 腌制排骨
// spareribs.preserve();
// // 炸排骨
// spareribs.fry();
// // 调汁
// spareribs.juice();
icookfacade cookfacade = new cookfacade();
cookfacade.cookspareribs();
system.out.println( "==== 糖醋排骨制作完成!" );
}
}
|
4. 运行结果
==== 开始做糖醋排骨...
1.准备猪排骨500克,葱末、姜末、酱油、花生油、白糖、醋、料酒、盐各适量...
2.将排骨洗净剁成3厘米长段,用开水汆一下,捞出放盆内,加入盐、酱油腌入味...
3.炒锅注油烧至六成热,下排骨炸至淡黄色捞出;油温加热至八成,再下锅炸至金黄色捞出...
4.炒锅留少许油烧热,下入葱花,姜末爆香,加入适量清水、酱油、醋、白糖、料酒、倒入排骨,烧开后用慢火煨至汤汁浓,排骨熟,淋上熟油,出锅即可!
==== 糖醋排骨制作完成!
三、该模式设计原则
1 迪米特法则——最小知识原则
2 封装变化部分
该图进一步展示了客户端应用程序,外观模式和子系统内部复杂应用三者的关系.
四、使用场合
1. 一个软件系统的复杂度比较高,需要一个更高级别的简单接口简化对子系统的操作时。
2. 当使用端与实现类之间有太多的依赖性,需要降低使用端与子系统或子系统间的耦合性,增加子系统的独立性时。
3. 当子系统是相互依存的,需要层级化子系统,简化子系统之间的相依性的时候,可以使用外观模式。
五、外观模式静态类图
希望本文所述对大家java程序设计有所帮助。
原文链接:https://blog.csdn.net/chengqiuming/article/details/70139355