9.外观设计模式(设计模式笔记)
来源:互联网 发布:艾诺迪亚3网络矿山在哪 编辑:程序博客网 时间:2024/05/07 10:32
文章参考过其他人的案例,有改动!
分类:1:创建型模式:
单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式;
2:结构型模式:
适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式
3:行为型模式:
模板方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘录模式,
解释器模式,状态模式,策略模式,职责链模式,访问者模式。
外观模式:
迪米特法则(最少知识原则):
一个软件实体应当尽可能少的和其他实体发生相互作用.
核心:
为子系统提供一个统一的接口,封装子系统的复杂性,便于客户端调用。
1.DrawerOne.java
- public class DrawerOne {
- public void open() {
- System.out.println("第一个抽屉被打开了");
- getKey();
- }
- public void getKey() {
- System.out.println("得到第二个抽屉的钥匙");
- }
- }
2.DrawerTwo.java
- public class DrawerTwo {
- public void open() {
- System.out.println("第二个抽屉被打开了");
- getFile();
- }
- public void getFile() {
- System.out.println("得到这个重要文件");
- }
- }
则通常为了拿到“重要文件”需要如下代码实现:
- public class Client {
- public static void main(String[] args) {
- DrawerOne darwerOne = new DrawerOne();
- DrawerTwo darwerTwo = new DrawerTwo();
- darwerOne.open();
- darwerTwo.open();
- }
- }
但是如果使用Facade外观模式,可新建一个Facade类:
- public class DrawerFacade {
- DrawerOne darwerOne=new DrawerOne();
- DrawerTwo darwerTwo=new DrawerTwo();
- public void open(){
- darwerOne.open();
- darwerTwo.open();
- }
- }
则此时调用的代码修改为:
- public class Client {
- public static void main(String[] args) {
- DrawerFacade drawer=new DrawerFacade();
- drawer.open();
- }
- }
开发中常见的场景:
频率很高。哪里都会遇到。各种技术和框架中,都有外观模式的使用。
如:
jdbc封装后,commons提供的DBUtils类,Hibernate提供的工具类,Srping JDBC工具类等
外观模式与适配器模式的比较
1)当需要使用一个现有的类而其接口并不符合你的需要时,就是用适配器;
2)当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观;
3)适配器改变接口以符合客户的期望;
4)外观将客户从一个复杂的子系统中解耦;
5)实现一个适配器可能需要一番功夫,也可能不费功夫,视目标接口的大小与复杂度而定;
6)实现一个外观,需要将子系统组合进外观中,然后将工作委托给子系统执行;
7)适配器模式有两种形式:对象适配器和类适配器。类适配器需要用到多重继承;
8)可以为一个子系统实现一个以上的外观;
9)适配器将一个对象包装起来以改变其接口;装饰者将一个对象包装起来以增加新的行为和责任;而外观将一群对象“包装”起来以简化其接口。
0 0
- 9.外观设计模式(设计模式笔记)
- 外观设计模式
- 外观设计模式
- 设计模式——外观设计模式
- 设计模式:8)外观设计模式
- java设计模式5 外观设计模式
- java设计模式之外观设计模式
- java设计模式之外观设计模式
- 设计模式之——外观设计模式
- 设计模式【8】:外观设计【接口适配】
- IOS设计模式第三篇之外观设计模式
- 二十二、外观设计模式
- 外观设计模式1
- 软件设计模式之外观设计模式(Darren)
- 胖虎白话学习设计模式之外观设计模式(Facade)
- Facade外观设计模式(结构型)
- 设计模式.笔记.外观模式
- 设计模式 笔记 观察者模式
- APP运营推广
- 扩展类
- 第3章 函数
- HDU4089概率dp解题报告
- chart控件基本使用——C#
- 9.外观设计模式(设计模式笔记)
- 编写Robotium 测试类(无源码的情形)
- LeetCode Sliding Window Maximum
- 近似正确的螺线方程
- Linux目录树架构示意图
- web前端
- openfire+smack聊天气泡效果ListView完成收发消息
- createElement appendChild
- JPA Query