设计模式首先是要解决问题的。

没有问题,就不要去设计什么模式出来。

具体问题具体分析。例如,在一个继承层次中追加一些新方法。

该怎么办?

问题要提出,不然不要轻易去设计:

1.有没有重用性的组件提取出来?

2.有没有可重用的接口?

3.有没有特殊性?

经过这么分析之后,发现我新追加的代码除了函数和函数参数之外,实现上几乎没有任何重用的可能性。这个时候该怎么办呢?

第一。既然接口可以重用,那就把这些方法用一个接口来表示。

interface IAXX{

fA();

gA();

}

第二。实现不可重用,意味着提取出来造成没必要的类的。【这就是传说中的类爆炸?】

所以必须这样弄:

interface IABXX extends IAXX, IBXX{

fA();

gA()

fB()

gB();

}

第三。在客户端,如果是IBXX类型的对象mB。那么判断一下mB是否也实现了接口IABXX ,如果实现了。

则调用

fA();

gA()

这俩函数。

抛开设计模式,软件设计的微思考相关推荐

  1. 视频教程-实用通俗易懂的设计模式-软件设计

    实用通俗易懂的设计模式 15年一线项目从业经验,长期从事大型商业项目管理. 长期主导研发金融,水利行业等,大型商业项目.深入研究项目全生命周期,参与公司产品线定位,架构设计,管理协调实施项目投标方案编 ...

  2. 软件设计模式--软件设计演变过程

    一.写这篇文章的原因 1.C语言能够使用设计模式吗?? 2.为什么要有软件设计模式?不学行不行? 3.怎么能够成为一个好的开发者,为什么有经验的人比你开发快,代码架构还好? 4.C++作为C的扩展,为 ...

  3. 软件设计模式——软件设计原则

    摘要 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.无数工程师实践的代码设计经验的总结,它是面向对象思想的高度提炼和模板化,使用设计模式是为了让代码具有更高的可重用性,更好的 ...

  4. 设计模式-软件设计七大原则

    目录 综述 1.开闭原则 1.1开闭原则的定义 1.2开闭原则的作用 1.3开闭原则的实现方法 2.里氏替换原则 2.1里氏替换原则的定义 2.2里氏替换原则的作用 2.3里氏替换原则的实现方法 3. ...

  5. 设计模式 - 软件设计的七大原则

    文章目录 前言 1. 软件设计模式原则 2. 开闭原则 1. 概念 2. 例子 3. 里氏替换原则 1. 概念 2. 例子 4. 依赖倒置原则 1. 概念 2. 代码 5. 单一职责原则 说明 6. ...

  6. 从零开始学习Java设计模式 | 软件设计原则篇:开闭原则

    从本讲开始,咱们就要开始学习第一章中的第三部分内容,即软件设计原则了. 在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件 ...

  7. 从零开始学习Java设计模式 | 软件设计原则篇:依赖倒转原则

    在本讲,我将为大家介绍软件设计原则里面的第三个原则,即依赖倒转原则. 概述 什么是依赖倒转原则呢?我们来看一下下面这段描述: 高层模块不应该依赖低层模块,两者都应该依赖其抽象:抽象不应该依赖细节,细节 ...

  8. 从零开始学习Java设计模式 | 软件设计原则篇:里氏代换原则

    在本讲中,我来为大家介绍一下软件设计原则里面的第二个原则,即里氏代换原则. 概述 首先,大家应该知道,里氏代换原则是面向对象设计的基本原则之一.那什么是里氏代换原则呢?里氏代换原则是指任何基类可以出现 ...

  9. 从零开始学习Java设计模式 | 软件设计原则篇:接口隔离原则

    在本讲,我将为大家介绍软件设计原则里面的第四个原则,即接口隔离原则. 概述 接口隔离原则是指客户端不应该被迫依赖于它不使用的方法,一个类对另一个类的依赖应该建立在最小的接口上面. 这句话可能不是很好理 ...

最新文章

  1. linux进程篇 (二) 进程的基本控制
  2. 计算机组成原理 控制冒险,电子科大-系统结构实验-解决控制冒险.docx
  3. android onpagescrolled 参数,Android
  4. Asp.Net Core 第05局:读取配置
  5. python在浏览器运行一片空白_Webdriver启动Firefox浏览器后,页面显示空白
  6. mybatis中collection中的ofType=“String“时
  7. NYOJ--106--背包问题
  8. MySQL 常用基础命令
  9. java中时时检查代码中变量的值_如何调试JDK源代码并查看局部变量值
  10. windows server 系统SERVER服务消失无法共享
  11. 安卓模拟器所有版本系统xp框架安装方法(万能)
  12. ae教程 (三)三维空间合成(一)
  13. 万用表二极管档和三极管档的使用
  14. 20155313 杨瀚 《网络对抗技术》实验七 网络欺诈防范
  15. wstmart系统研究日志二
  16. 渗透测试-CS架构客户端
  17. Speedoffice(word)如何设置分栏
  18. 【IDEA】IntelliJ IDEA代码特效插件-屏幕抖动和颗粒效果
  19. VSCODE: Merge-conflict设置
  20. Nvidia Agx Xavier平台MIPI CSI-DHPY驱动调试

热门文章

  1. php验证用户名密码是否为空,【后端开发】php验证用户名密码是否为空
  2. ajax重复被调用,重复jQuery ajax调用
  3. 1000在计算机术语是什么意思,计算机里所提及的1k字是什么
  4. html带颜色表格怎么做,使用HTML添加表格4(行颜色与表格嵌套)——零基础自学网页制作...
  5. C++对象模型6——g++中虚继承的实现
  6. 错误LNK1107文件无效或损坏: 无法在 0x338 处读取
  7. mha检测mysql报错_MySQL MHA 报错处理
  8. 软件架构自学笔记----分享“去哪儿 Hadoop 集群 Federation 数据拷贝优化”
  9. JavaScript获取浏览器的显示区域大小信息
  10. 人类又双叒叕输了,就没人能管管这条“狗”吗?