浅谈设计模式——对象的结构模式
来源:互联网 发布:mac 虚拟机免费 编辑:程序博客网 时间:2024/05/20 06:40
近期对Java的设计模式比较感兴趣,设计模式更好的用途只能等到工作后慢慢地体会了,以下总结一下每种设计模式的摘要,方便有个知识框架。感兴趣的可以参考阎宏博士的《Java与模式》,同时参考以下博客,个人认为写得十分好的!
http://www.cnblogs.com/java-my-life/
对象的结构模式
6 适配器模式
即,适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接
口不匹配而无法在一起工作的两个类能够在一起工作。
(1) 类的适配器
(2) 对象的适配器
特殊的---缺省适配器模式
7 装饰模式(包装模式)
角色分为:抽象构件角色、具体构件角色、装饰角色、具体装饰角色
应用实例:Java I/O库的实现
8 代理模式
即,代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
角色分为:抽象对象角色、目标对象角色和代理对象角色
应用:java.lang.reflect中提供Proxy, InvocationHandler和Method
9 门面模式(外观模式)
即,门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。
角色:门面角色、子系统角色
优点:松散耦合、简单易用、更好的划分访问层次
应用:门面模式在tomcat中的使用
10 桥梁模式
即,将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化。
角色:抽象化角色、修正抽象化角色、实现化角色、具体实现化角色
优点:分离抽象和实现部分、更好的扩展性
使用场景:发送提示消息(消息的发送方式聚合在消息体内部)
JDBC驱动器
11 合成模式
(1) 安全式合成模式
要求管理聚集的方法只出现在树枝构件类中,而不出现在树叶构件类中。
角色:抽象构件角色、树叶构件角色、树枝构件角色
缺点:不够透明,因为树叶类和树枝类将具有不同的接口
(2) 透明式合成模式
要求所有的具体构件类,不论树枝构件还是树叶构件,均符合一个固定接口。
角色:同上
安全性合成模式是指:从客户端使用合成模式上看是否更安全,如果是安全的,那么就不会有发生误操作的可能,能访问的方法都是被支持的。
透明性合成模式是指:从客户端使用合成模式上,是否需要区分到底是“树枝对象”还是“树叶对象”。如果是透明的,那就不用区分,对于客户而言,都是Compoent对象,具体的类型对于客户端而言是透明的,是无须关心的。
12 享元模式
即,采用一个共享来避免大量拥有相同内容对象的开销。
(1) 单纯享元模式
角色:抽象享元角色、具体享元角色和享元工厂角色(有HashMap来保证元素不会重复创建)
(2) 复合享元模式
角色:抽象享元角色、具体享元角色、复合享元角色和享元工厂角色
注:复合享元角色所代表的对象是不可以共享的,但是一个复合享元对象可以分解成为多个本身是单纯享元对象的组合。
优点:可以大幅度地降低内存中对象的数量
缺点:享元模式使得系统更加复杂。享元模式将享元对象的状态外部化,而读取外部状态使得运行时间稍微变长。
使用场景:Java中的String对象
- 浅谈设计模式——对象的结构模式
- 浅谈设计模式——对象的行为模式
- 浅谈设计模式——对象的创建型模式
- 【面向对象】——设计模式之结构型模式
- 设计模式之类对象结构型 — ADAPTER (适配器)模式
- 设计模式之类对象结构型 — BRIDGE (桥接)模式
- 浅谈设计模式——创建者模式
- 浅谈设计模式——原型模式
- 浅谈设计模式——外观模式
- 浅谈设计模式——适配器模式
- 浅谈Java设计模式—-装饰模式
- 浅谈面向对象设计模式:观察者模式
- 深入体验JavaWeb开发内幕——浅谈面向对象的设计模式
- 深入体验JavaWeb开发内幕——浅谈面向对象的设计模式
- 结构型对象设计模式
- 结构型对象设计模式
- Python 的结构型设计模式——适配器模式
- 关于设计模式的学习—结构型模式
- poj2955 Brackets 【区间dp】
- JVM性能调优
- hdu--1879继续畅通工程
- 习题11 提问
- android开发五子棋人人对战
- 浅谈设计模式——对象的结构模式
- cesiumjs开发实践 (五)
- eclipse/tomcat: deploy doesn't work any more (ClassNotFoundException)
- 挑战程序设计解题报告 2.6.2素数
- Activity之间返回数据 #Android开发权威指南学习心得#
- BZOJ4640 决斗
- [HTML/CSS]盒子模型,块级元素和行内元素
- 缺页率的计算方法
- 反射模拟DbUtils实现ResultSet转成Bean实例