第1部分 接口型模式
2016-08-23 22:59
169 查看
第2章 接口型模式介绍
接口和抽象类的区别:
1、一个类可以实现多个接口,却只能继承一个抽象类
2、抽象类可以包含具体方法,接口所有方法都是抽象的
3、抽象类可以声明和使用字段,接口则不能,但可以创建静态的final常量
4、抽象类中的方法可以是public\private\protected\默认的package;接口的方法都是public
5、抽象类可以定义构造方法;接口不能
不同场景下应使用的模式:
1、适配类的接口以匹配客户端期待的接口:适配器模式
2、为一组类提供一个简单接口:外观模式
3、为单个对象与复合对象提供统一的接口:合成模式
4、接触抽象与实现之间的耦合,使得二者能够独立演化:桥接模式
第3章 适配器(Adapter)模式
适配器模式的意图在于,使用不同接口的类所提供的服务为客户端提供它所期望的接口。
类的适配器继承自现有的类,同时实现目标接口;
对象适配器继承自目标类,同时引用现有的类。
适用场景:
1)系统需要使用现有的类,而这些类的接口不符合系统的接口。
2)想要建立一个可以重用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
3)两个类所做的事情相同或相似,但是具有不同接口的时候。
4)旧的系统开发的类已经实现了一些功能,但是客户端却只能以另外接口的形式访问,但我们不希望手动更改原有类的时候。
5)使用第三方组件,组件接口定义和自己定义的不同,不希望修改自己的接口,但是要使用第三方组件接口的功能。
适配器模式是一个补救模式,用来解决接口不相容的问题。
第4章 外观(Facade,也叫门面)模式
外观模式的意图是为子系统提供一个接口,便于它的使用。(定义一个高层接口,这个接口使得这一子系统更加容易使用。)
应用场景:
1)为一个复杂子系统提供一个简单接口。
2)提高子系统的独立性。
3)在层次化结构中,可以使用Facade模式定义系统中每一层的入口
顾名思义:为一个复杂系统,提供一个外观(一个门)
第5章 合成(composite,也叫组合)模式
合成模式的意图是为了保证客户端调用单对象与组合对象的一致性。
应用场景:
1)文件系统
只要是树形结构,就考虑使用组合模式。
树形菜单、文件系统。
第6章 桥接(Bridge)模式
桥接模式的意图是将抽象与抽象方法的实现相互分离来实现解耦,以便二者可以相互独立的变化。
将抽象和实现解耦
应用场景:
1)驱动器(数据库驱动)
接口和抽象类的区别:
1、一个类可以实现多个接口,却只能继承一个抽象类
2、抽象类可以包含具体方法,接口所有方法都是抽象的
3、抽象类可以声明和使用字段,接口则不能,但可以创建静态的final常量
4、抽象类中的方法可以是public\private\protected\默认的package;接口的方法都是public
5、抽象类可以定义构造方法;接口不能
不同场景下应使用的模式:
1、适配类的接口以匹配客户端期待的接口:适配器模式
2、为一组类提供一个简单接口:外观模式
3、为单个对象与复合对象提供统一的接口:合成模式
4、接触抽象与实现之间的耦合,使得二者能够独立演化:桥接模式
第3章 适配器(Adapter)模式
适配器模式的意图在于,使用不同接口的类所提供的服务为客户端提供它所期望的接口。
类的适配器继承自现有的类,同时实现目标接口;
对象适配器继承自目标类,同时引用现有的类。
适用场景:
1)系统需要使用现有的类,而这些类的接口不符合系统的接口。
2)想要建立一个可以重用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
3)两个类所做的事情相同或相似,但是具有不同接口的时候。
4)旧的系统开发的类已经实现了一些功能,但是客户端却只能以另外接口的形式访问,但我们不希望手动更改原有类的时候。
5)使用第三方组件,组件接口定义和自己定义的不同,不希望修改自己的接口,但是要使用第三方组件接口的功能。
适配器模式是一个补救模式,用来解决接口不相容的问题。
第4章 外观(Facade,也叫门面)模式
外观模式的意图是为子系统提供一个接口,便于它的使用。(定义一个高层接口,这个接口使得这一子系统更加容易使用。)
应用场景:
1)为一个复杂子系统提供一个简单接口。
2)提高子系统的独立性。
3)在层次化结构中,可以使用Facade模式定义系统中每一层的入口
顾名思义:为一个复杂系统,提供一个外观(一个门)
第5章 合成(composite,也叫组合)模式
合成模式的意图是为了保证客户端调用单对象与组合对象的一致性。
应用场景:
1)文件系统
只要是树形结构,就考虑使用组合模式。
树形菜单、文件系统。
第6章 桥接(Bridge)模式
桥接模式的意图是将抽象与抽象方法的实现相互分离来实现解耦,以便二者可以相互独立的变化。
将抽象和实现解耦
应用场景:
1)驱动器(数据库驱动)
相关文章推荐
- GIF文件格式
- Oracle 中 decode 函数用法
- 单行函数
- 设置log4j的日志回滚
- [置顶] Java23种设计模式总汇
- 用CSS画三角形
- Mybatis数据的增删改查
- vundle: vim插件管理安装之错误总结
- ios静态库.a文件打包
- insert into select 和 select into from 用法和区别
- Spring Boot 拦截器
- webpack-react
- 史上最佳 Mac+PhpStorm+XAMPP+Xdebug 集成开发和断点调试环境的配置
- oracle中的as
- C#多线程编程
- jQuery修改DOM结构
- hdu3535AreYouBusy(分组背包问题)
- 安卓布局之表格布局(TableLayout)
- 闲杂小记(l六)
- 疑问解答