java设计模式(结构型)之外观模式
来源:互联网 发布:手风琴js 懒人之家 编辑:程序博客网 时间:2024/06/11 17:49
第0章:简介
外观模式定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
外观模式本质:封装交互,简化调用
参考:研磨设计模式(书籍),大话设计模式(书籍)
模式图:
待补充
第1章:实践
第0节:全部功能外观模式
(1)接口1(Intf1.java)
package com.mcc.core.designPattern.structure.facade.simpleFacade;/**
* 接口1
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-11 下午8:43
*/
public interface Intf1 {
public void someMethod();
}
(2)接口1实现类(Intf1Impl.java)
package com.mcc.core.designPattern.structure.facade.simpleFacade;/**
* 接口1实现类
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-11 下午8:44
*/
public class Intf1Impl implements Intf1 {
@Override
public void someMethod() {
System.out.println("接口1实现类");
}
}
(3)接口2.java
package com.mcc.core.designPattern.structure.facade.simpleFacade;/**
* 接口2
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-11 下午8:44
*/
public interface Intf2 {
public void someMethod();
}
(4)接口2实现类(Intf2Impl.java)
package com.mcc.core.designPattern.structure.facade.simpleFacade;/**
* 接口2实现类
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-11 下午8:45
*/
public class Intf2Impl implements Intf2 {
@Override
public void someMethod() {
System.out.println("接口2实现类");
}
}
(5)外观类(Facade.java)
package com.mcc.core.designPattern.structure.facade.simpleFacade;/**
* 外观类
*
* 外观模式的定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
* 外观模式的本质:封装交互,简化调用
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-11 下午8:46
*/
public class Facade {
/**
* 外观入口,这里可以用单例模式实现
*/
public void entrance(){
Intf1 intf1 = new Intf1Impl();
intf1.someMethod();
Intf2 intf2 = new Intf2Impl();
intf2.someMethod();
}
}
(6)客户端测试(Client.java)
package com.mcc.core.designPattern.structure.facade.simpleFacade;/**
* 客户端测试
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-11 下午8:56
*/
public class Client {
public static void main(String args[]){
//通过外观调用
new Facade().entrance();
}
}
第1节:部分功能外观模式(控制访问)
(1)接口1(Intf1.java)
package com.mcc.core.designPattern.structure.facade.complexFacade;/**
* 接口1
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-11 下午8:59
*/
public interface Intf1 {
public void method1A();
public void method1B();
}
(2)接口1实现类(Intf1Impl.java)
package com.mcc.core.designPattern.structure.facade.complexFacade;/**
* 接口1实现类
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-11 下午9:00
*/
public class Intf1Impl implements Intf1 {
@Override
public void method1A() {
System.out.println("接口1实现类方法1A,系统内部使用");
}
@Override
public void method1B() {
System.out.println("接口1实现类方法1B,系统外部使用");
}
}
(3)接口2(Intf2.java)
package com.mcc.core.designPattern.structure.facade.complexFacade;/**
* 接口2
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-11 下午9:03
*/
public interface Intf2 {
public void method2A();
public void method2B();
}
(4)接口2实现类(Intf2Impl.java)
package com.mcc.core.designPattern.structure.facade.complexFacade;/**
* 接口2实现类
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-11 下午9:04
*/
public class Intf2Impl implements Intf2 {
@Override
public void method2A() {
System.out.println("接口2实现类方法2A,系统内部使用");
}
@Override
public void method2B() {
System.out.println("接口2实现类方法2B,系统外部使用");
}
}
(5)外观接口(FacadeIntf.java)
package com.mcc.core.designPattern.structure.facade.complexFacade;/**
* 外观接口,外部访问
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-11 下午9:11
*/
public interface FacadeIntf {
public void method1B();
public void method2B();
}
(6)外观实现类(FacadeImpl.java)
package com.mcc.core.designPattern.structure.facade.complexFacade;/**
* 外观实现类
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-11 下午9:12
*/
public class FacadeImpl implements FacadeIntf {
@Override
public void method1B() {
new Intf1Impl().method1B();
}
@Override
public void method2B() {
new Intf2Impl().method2B();
}
}
(7)客户端测试(Client.java)
package com.mcc.core.designPattern.structure.facade.complexFacade;/**
* 客户端测试
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-11 下午9:13
*/
public class Client {
public static void main(String args[]){
//调用外观接口方法
FacadeIntf facadeIntf = new FacadeImpl();
facadeIntf.method1B();
facadeIntf.method2B();
}
}
0 0
- java设计模式(结构型)之外观模式
- 设计模式-结构型之外观模式
- Java设计模式概述之结构型模式(外观模式)
- Java设计模式之结构型模式-外观模式(Facade)
- 设计模式之外观(Facade)---对象结构型模式
- 设计模式之外观模式Facade(结构型)
- 设计模式之外观模式(结构型)
- 设计模式之结构型-外观模式(9)
- Java设计模式(9)结构型:外观模式
- 设计模式之外观模式(Java)
- 设计模式学习笔记:结构型模式之外观模式
- 一天学习两个设计模式之Facade模式(外观模式,结构型模式)
- java 设计模式之外观模式的详解(结构模式)
- 设计模式 - 结构型模式 - 外观模式
- 【设计模式】- 【结构型模式】外观模式
- 设计模式-结构型-外观
- 外观模式——结构型设计模式之五
- 设计模式(结构型)之外观模式(Facade Pattern)
- PrimeFaces4.0关于calendar显示简体中文
- SQLServer和Oracle的常用函数对比
- GET和POST区别
- 一步步学习SPD2010--第九章节--使用可重用工作流和工作流表单(14)--关键点
- 【转载】 Facelets UI 标签参考
- java设计模式(结构型)之外观模式
- 错误票据 - 蓝桥杯
- struts2 拦截器 interceptor
- javascript入门四
- SQLite学习手册(数据表和视图)
- 实现子Div在父Div中水平居中的一种方法
- CORE Computer Science Journal Rankings
- 海盗分赃问题
- 【转】linux repo准备和代码下载