模板方法设计模式与策略模式
2019独角兽企业重金招聘Python工程师标准>>>
一、Java继承
缺点:
1、耦合性太强,容易破坏封装性,比如空实现之类的;
2、不好多继承;
3、为了扩展会多重继承,导致代码复杂不好维护;也不知道动态扩展
优点
1、继承无需创建父类的对象;
2、一般用于抽象方法的继承和实现,比如模板方法设计模式;
二、Java继承优点的利用——模板方法设计模式
1、SpringFramework里面的声明式事务处理;
有一个接口 PlatformTransactionManager,里面有三个抽象方法;
getTransaction();commit();rollback();
有一个抽象类,AbstractPlatformTransactionManager,实现上面的接口;
里面的commit和rollback基本流程都已经实现,只有getTransacton()方法没有实现;调用的是dogetTransacton()抽象方法;
有多个实现子类DataSourceTransactionManager、HibernateTransactionManager等,继承上面的抽象类;
他们里面有自己对上面抽象方法dogetTransacton()的实现;
2、自定义类加载器的实现;(委托机制)
自定义类加载器,一般要继承ClassLoader,然后它里面有loadClass方法,但是这个方法的流程是委托机制的流程,我们不用管他,只需要把findClass方法给覆盖就可以了;这个方法主要就是把文件给传进来而已;
3、面试题:聊聊对类,抽象类,接口的理解;
另外看《代理模式》那篇文章里面谈这三者的关系;
三、Java继承缺点的补偿——策略模式(组合)
如果前提条件一样,那么优先使用对象组合而不是类继承
参考;
https://my.oschina.net/u/3377232/blog/1518635
https://my.oschina.net/u/3377232/blog/1518632
四、集继承和组合与一身的一种设计模式——适配器(Adapt)模式
适配器模式也是一种包装模式
适配器模式不适合在详细设计阶段使用它,它是一种补偿模式,专用来在系统后期扩展、修改时所用。
https://my.oschina.net/u/3377232/blog/1518617
当接口发生改变之后,没法正常调用接口,那就用适配器做一个转换了;比如中国电器用美国的电路肯定是不行的,所以需要自带一个适配器去做一个转换;然后才能用美国的电给中国买的电器充电;
转载于:https://my.oschina.net/newchaos/blog/1512336
模板方法设计模式与策略模式相关推荐
- 研磨设计模式之 策略模式--转
http://www.uml.org.cn/sjms/201009092.asp 研磨设计模式之 策略模式 2010-09-09 作者:云飞龙行 来源:云飞龙行的blog 先感谢众多朋友的支持 ...
- 设计模式之策略模式+工厂模式+模板模式结合
设计模式之策略模式+模板模式 为什么总是学不好设计模式 从"登录功能"中发现问题. 首先我们简单的了解功能需求: 于是你开始干活了: 1.控制层代码如下,根据不同的登录方式调用不同 ...
- Java设计模式之策略模式与状态模式
一.策略模式定义 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式可以在不影响客户端的情况下发生变化. 好了,定义看看就完了,我知道你很烦看定义. 二.策 ...
- 换个姿势学设计模式:策略模式
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源:公众号「闻人的技术博客」 前言 前段时间,接到一个 ...
- 设计模式:策略模式(Strategy)
定 义:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化, 不会影响到使用算法的客户. 示例:商场收银系统,实现正常收费.满300返100.打8折.......等不同收费 ...
- C++设计模式之策略模式(Strategy)
Strategy策略模式 作用:定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户. UML图: 代码实现 #include <iostream& ...
- python策略模式包含角色_详解Python设计模式之策略模式
虽然设计模式与语言无关,但这并不意味着每一个模式都能在每一门语言中使用.<设计模式:可复用面向对象软件的基础>一书中有 23 个模式,其中有 16 个在动态语言中"不见了,或者简 ...
- 一篇博客读懂设计模式之-----策略模式
设计模式之策略模式 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的对象 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换. 主要解决:在有多种算法相似的情况下 ...
- 面向对象设计模式之策略模式
面向对象设计模式之策略模式 1.策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户 2.抽象鸭子类,鸭子飞行行为在此处类似于算法族 1 package ...
最新文章
- (0020)iOS 开发之-设计模式-懒加载解惑
- 【Get 以太坊技能】CentOS 7 安装 go
- Scala中的Map使用例子
- 支付宝支付返回通知时 notify_url和return_url的选择
- 在Axure中通过全局变量实现两个文本框与中继器联动
- Linux 如何将eth1网卡修改为eth0
- SAX与DOM之间的区别 转帖
- [置顶] ibatis框架----控制台输出SQL语句
- 最速下降法matlab全局最小值_matlab实现最速下降法和dfp求函数最小值
- 白帽子讲Web安全(第 10 章 访问控制)
- 怎么在国内创建谷歌账号_如何在Google文档中创建模板
- 软件测试技术+HR面试
- windows server 2012 R2密码恢复
- kafka最全面试题汇总
- 快递鸟电⼦⾯单批量打印流程与注意事项
- 什么是SAP HANA?
- 亚洲及中国全国境内雷电闪电数据采集程序服务部署+接口调用说明
- unknown host问题解决办法
- MySQL数据库的数据更新
- python实现labelme样本自动标注
热门文章
- error: device not found - waiting for device -
- 分布式缓存系统Memcached简介与实践(.NET memcached client library)
- 【BZOJ】1003: [ZJOI2006]物流运输trans(SPFA+DP)
- clisp语言中的包
- Vue项目自动转换 px 为 rem,高保真还原设计图
- 微服务常见安全认证方案Session token cookie跨域
- mvn 打包项目到eclipse
- yii2权限控制rbac之rule详细讲解(转)
- php-curl小记
- 基础才是重中之重~何为原子化操作