java23种设计模式一(连载)
来源:互联网 发布:淘宝禁止发布违背 编辑:程序博客网 时间:2024/06/11 16:45
设计模式概要
设计模式,顾名思义,它是一种模式,在面向对象中,它运用类与它们的方法来达到目标。使用它便于代码的可重用和可读性,有利于系统的维护。《Design pattern》一书中首次提出了23种设计模式,倘若你想成为编程高手,就必须要学习设计模式。
以下列出《Design pattern》一书中描述的23种设计模式,它们分别是:
1、适配器模式
2、外观模式
3、合成模式
4、桥接模式
5、单例模式
6、观察者模式
7、调停者模式
8、代理模式
9、责任链模式
10、享元模式
11、构建者模式
12、工厂方法模式
13、抽象工厂模式
14、原型模式
15、备忘录模式
16、模板方法模式
17、状态模式
18、策略模式
19、命令模式
20、解释器模式
21、装饰器模式
22、迭代器模式
23、访问者模式
以下分别介绍这23种设计模式
一、适配器模式
所谓适配器模式,是指将一个类适配成用户所期待的,它通常分为两大类:类适配器和对象适配器。
类适配器
这种适配器模式下,适配器继承自已实现的类(一般多重继承)。
具体来说,我们需要实现目标接口,并继承自现有类,来达到用户所期望的效果。具体实现如下:
package cn.com.pattern; //目标抽象角色,用户需要的是有圆形的usb接口 public interface Target { public void provideCircleUsb(); } package cn.com.pattern; //源角色,这里是指提供方形的usb接口 public class Adaptee { public void provideSquareUsb(){ System.out.println("我提供方形的USB接口"); } } package cn.com.pattern; //适配角色,这里指老板买给我们的那个转换器 public class Adapter extends Adaptee implements Target{ @Override //转换器将圆形的接口转换为方形接口 public void provideCircleUsb() { this.provideSquareUsb(); } } package cn.com.pattern; //客户端,也就是问题中的键盘 public class Client { public static void main(String[] args) { Target target=new Adapter(); //键盘只能使用圆形的USB接口 target.provideCircleUsb(); } }
对象适配器
在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。当你需要适配的一组方法并非定义在接口中时,就可以创建一个对象适配器,采用对象方式实现:
package cn.com.pattern;public class Adapter implements Target{ private Adaptee adptee; public Adapter(Adaptee adptee){ this.adptee=adptee; } @Override //转换器将圆形的接口转换为方形接口 public void provideCircleUsb() { adptee.provideSquareUsb(); }
- java23种设计模式一(连载)
- java23种设计模式二(连载)
- java23种设计模式三(连载)
- java23种设计模式四(连载)
- java23种设计模式五(连载)
- java23种设计模式六(连载)
- java23种设计模式七(连载)
- java23种设计模式八(连载)
- java23种设计模式九(连载)
- java23种设计模式十(连载)
- java23种设计模式十一(连载)
- java23种设计模式十二(连载)
- java23种设计模式十三(连载)
- java23种设计模式十四(连载)
- java23种设计模式(一)
- Java23种设计模式
- JAVA23种设计模式
- JAVA23种设计模式
- Linux终端命令用法精选(分类,便于查看)
- 串口通讯
- chrome桌面提醒功能使用
- c++ 引用
- label(标签)的使用
- java23种设计模式一(连载)
- NFC:不只是移动支付
- 商业智能方案部署之SQL Server 2008R2与SharePoint 2010环境的集成
- 关于数据质量“成长的烦恼”的五点建议
- 在ubuntu上安装jdk7u9
- 循环的应用---(1)判断输入是否合法,不合法要求重新输入(2)某项功能的循环执行
- Codec Engine 开发
- Incorrect syntax near the keyword 'WITH'
- 在线考试系统V3升级V5详解之一