设计模式很难定义,通俗来说,就像是写作文的套路。程序员在程序设计总结了很多开发经验,就形成了设计模式。其实在有了框架之后,不会去开发完整的应用,设计模式的重要性降低了很多。

基本思想:1.将变化的和不变的部分分开,在修改和维护时只需要改动变化的部分。

具体方式:

1.类继承是oop中的三大特点之一,可以实现代码复用,并且代码层次更清晰,但是继承会使类的耦合度变高,简单来说,一个类的改动可能会影响其他类,使代码的修改和维护变得困难。灵活性可以使用接口设计,通过继承接口,实现不同的行为,可以看到,代码的复用性降低了,于是又引入了在接口中的适配器。实现代码复用的其他方式为对象组合,将功能的实现委托(delegate)给其他对象。

2.多态:在向函数传递对象时,对象类型选择范围更广。不是针对具体类编程,扩展性更强。

3.很多现实生活中的行为都可以抽象成方法,当然,此时我们只是抽象思考,并不关心它们的具体实现方式。比如观察这模式。现实生活中的订阅报纸很像。那么事件类是怎么注册观察者的呢?其实很多gui的组件在处理用户交互的时候就用到了这种设计模式。这里还有个问题就是,谁主动订阅的?Observer持有Subject的对象引用,还是Subject对象持有Oberver对象的应用?在observer和observable中又存在push和pull的区别。就像报社发出了有新报纸的信号,报社推送给用户就是push,用户自己取就是pull,以该例子理解起来就不难了。

4.装饰器模式,通过组合对象,调用组合对象的代码,从而实现代码的复用。

5.工厂模式:对new进行封装,根据需要(参数)动态生成所需对象。

6.单例模式:通过类方法调用私有构造器,确保了只有一个对象。

转载于:https://www.cnblogs.com/Robin008/p/9254228.html

面向对象程序的设计模式相关推荐

  1. iOS开发 - 面向对象设计的设计模式(一):创建型模式(附 Demo UML类图)

    继上一篇的面向对象设计的设计原则,本篇是面向对象设计系列的第二个部分:面向对象设计的设计模式的第一篇文章. 另外,本篇博客的代码和类图都保存在我的GitHub库中:中的Chapter2. 最开始说一下 ...

  2. 电大java语言与面向对象程序设计基础_6406Java语言与面向对象程序设计基础A卷...

    6406Java语言与面向对象程序设计基础A卷 试卷编号:6406 座位号 浙江广播电视大学2006年春季学期开放教育专科期末考试 <Java语言与面向对象程序设计基础>试题 2006年7 ...

  3. C++ 面向对象程序三大特性之 继承

    目录 继承的概念 继承的定义及使用 继承方式和访问权限 基类和派生类对象的赋值转换 继承中的各成员的作用域 派生类的默认成员函数 构造函数 拷贝构造 赋值运算符重载函数 析构函数 继承与友元 继承与静 ...

  4. java面向对象程序练习_5本面向经验丰富的程序员的高级Java书籍

    java面向对象程序练习 Sometimes back I wrote an article for Best Core Java Books for beginners, today I am sh ...

  5. 面向对象程序有哪些优点呢?

    转自: 面向对象程序有哪些优点呢? 面向对象简介: 面向对象(Object Oriented)是软件开发方法,一种编程范式.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界 ...

  6. Java面向对象程序思想

    Java第六天 面向对象程序思想 一.面向过程   分析出解决问题的步骤,然后用函数(Function )或者程序过程(Poceduere )把这些步骤步一步地实现,程序执行的过程就是按一定顺序调用函 ...

  7. 【SCL】博图SCL语言回顾和第一个面向对象程序

    西门子SCL语言回顾复习和编写第1个面向对象程序 (形参:形参指的是指令上标记该指令要使用的数据位置的标识符;简单来说就是只有数据类型,没有实际的地址,在调用时可以写入). (实参:实参指的是包含指令 ...

  8. 软考软件设计师---面向对象技术(设计模式--创建型--工厂、生成器、原型、单例)

    转载于自己博客文章: 软考软件设计师---面向对象技术(设计模式--创建型--工厂.生成器.原型.单例) - 松下之约一.创建型设计模式关注对象的创建,让一个类得到实例化过程由另一类的对象完成.分类: ...

  9. C#面向对象程序设计课程实验四:实验名称:C#面向对象程序设计基础

    C#面向对象程序设计课程实验四:实验名称:C#面向对象程序设计基础 实验内容:C#面向对象程序设计基础 一.实验目的 二.实验环境 三.实验内容与步骤 3.1.1.实验内容 3.1.2.实验步骤 3. ...

  10. 小赵老师课堂开课了 !天道酬勤,相信自己学到就是赚到,一起来学习吧--- java面向对象程序设计基础的知识!!!!

    大家!我是下一个pony,今天我又来更新帖子了~ 今天我们讲解的是java面向对象程序设计基础的知识~我们从以下几个方面来进行简单的讲解: ============================== ...

最新文章

  1. java-在应用中获取spring定义的bean
  2. 用python画关系网络图-python networkx 包绘制复杂网络关系图
  3. Java异常知识整理_处理异常时的性能开销
  4. 修改ECSHOP,支持图片云存储化(分离到专用图片服务器)
  5. 诡异的DateTime.TryParseExact方法
  6. java调用kettle例子_Kettle API - Java调用示例
  7. C++ 判断元音/辅音
  8. (转)使用CGLIB实现AOP功能与AOP概念解释
  9. 浏览器安全检查己通过_Edge浏览器(Chromium)——从XSS到接管网页
  10. linux系统组成之小型RedHat little linux制作二
  11. foreach循环怎么获取全部返回值_PHP跳出循环的方法语句有哪些
  12. Java实现简单计算器
  13. 测试显卡好坏的软件叫什么关系,#现在测显卡好坏,有无暗病,都用什么软件#显卡压力测试 甜甜圈...
  14. Pytorch 基于ResNet-18的服饰识别(使用Fashion-MNIST数据集)
  15. 17个支持图片外链的免费相册
  16. Windows自动更新进程wuauclt.exe 进程服务关闭方法
  17. python代码螺旋线怎么写_用Python绘制三轴对数螺旋线
  18. win32 mysql误删数据恢复_mysql误删数据恢复
  19. 教孩子学习乘法和除法,我算是绞尽脑汁了
  20. 详解如何在vue项目中使用lodop打印插件,以及样式打印预览缺失的问题(底部)

热门文章

  1. ckeditor 触发事件(案例)
  2. 济宁与华为企业云战略合作携手推进云计算产业发展
  3. 第三个Sprint冲刺事后诸葛亮报告
  4. 国庆期间新闻回顾:微软智斗盗版 华为出手3Com
  5. SCI论文之数据可用性陈述--Data availability statement
  6. jetbrain rider 逐渐完美了,微软要哭了么?
  7. sql server启动服务和还原bak文件
  8. 怎么实现单击span时给span添加边框
  9. layDate——初步使用
  10. Java学习(8):贪吃蛇游戏