设计模式简介

深入理解面向对象

  向下:深入理解三大面向对象机制

    封装,隐藏内部实现

    继承,复用现有代码 

    多态,改写对象行为

  向上:深刻把握面向对象机制所带来的抽象意义,理解如何使用这些机制来表达现实世界,掌握什么是“好的面向对象设计”。

如何解决复杂性?

  分解:人们面对复杂性有一个常见的做法,即分而治之,将大问题分解为多个小问题,将复杂问题分解为多个简单问题。

  抽象:更高层次来讲,人们处理复杂性  有一个通用的技术,即抽象。由于不能掌握全部的复杂对象,我们选择忽视它的非本质细节,而去处理泛化和理想化了的对象模型。

 软件设计的目标

  什么是好的软件设计?软件设计的金科玉律:复用!

重新认识面向对象

  理解隔离变化

    从宏观层面来看,面向对象的构建方式更能适应软件的变化,能将变化所带来的影响减为最小

  各司其职

    从微观层面来看,面向对象的方式更强调各个类的“责任”

    由于需求变化导致的新增类型不应该影响原来类型的实现——是所谓各负其责

  对象是什么?

    从语言实现层面来看,对象封装了代码和数据

    从规格层面讲,对象是一系列可被使用的公共接口

    从概念层面讲,对象是某种拥有责任的抽象    

面向对象设计原则

  1、针对接口编程,而不是针对实现编程

    不将变量类型声明为某个特定的具体类,而是声明为接口

    客户程序无需获知对象的具体类型,只需要知道对象的接口

    减少系统中各部分的依赖关系,从而实现“高内聚、低耦合”的类型设计方案

 

转载于:https://www.cnblogs.com/Maurice-code/p/11602242.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Css3: gradient背景渐变

Css3: gradient背景渐变 原文链接&#xff1a;http://kk073000.blog.163.com/blog/static/34826942012123111322691/ css3实现了背景渐变。 <gradient> [ <linear-gradient> | <radial-gradient> | <repeating-linear-gradient> | <repeating-r…

模板方法

重构的关键技法&#xff1a; 静态 -> 动态 早绑定 -> 晚绑定 继承 -> 组合 编译时依赖 -> 运行时依赖 紧耦合 -> 松耦合 "组件协作"模式 现代软件专业分工之后的第一个结果是“框架与应用程序的划分”&#xff0c;“组件协作”模式通过晚期绑定&#…

聚类 python_python中实现k-means聚类算法详解

算法优缺点&#xff1a; 优点&#xff1a;容易实现 缺点&#xff1a;可能收敛到局部最小值&#xff0c;在大规模数据集上收敛较慢 使用数据类型&#xff1a;数值型数据 算法思想 k-means算法实际上就是通过计算不同样本间的距离来判断他们的相近关系的&#xff0c;相近的就会放…

python笔试常见题

1、冒泡排序&#xff1a; 冒泡排序算是最基本的python算法了。也算python面试遇到问的最多的了。 如果是封装成函数。代码如下&#xff1a; 如果初始就一个字典。那么代码为&#xff1a; 冒泡排序的本质就是两两比较。根据结果调换位置。最终达到一个排序的效果。 注&#xff1…

固定资产打开提示:上年度数据未结转!

问题现象&#xff1a;固定资产打开提示&#xff1a;上年度数据未结转&#xff01; 问题分析&#xff1a;服务器出问题后&#xff0c;数据库UFSYSTEM丢失&#xff0c;重新建账后年度数据覆盖后出现的&#xff0c;那么问题应该出在UFSYSTEM库UA_ACCOUNT_SUB表与年度库Accinformat…

windows MySQL 5+ 服务手动安装

MySQL 5 服务手动安装的方法&#xff1a;运行cmd&#xff0c;进入mysql的安装目录&#xff1a; C:\Users\aministrator> D: D:\> cd MySQL Server 5.6\bin D:\MySQL Server 5.6\bin>在bin目录中运行mysqld.exe -install命令&#xff0c;安装不完成会有提示信息。#1、手…

Kotlin防止按钮多次点击

刚开始写kotlin 这段代码写的可能有问题 望指正 object ViewClickDelay {var hash: Int 0var lastClickTime: Long 0var SPACE_TIME: Long 3000 }infix fun View.clickDelay(clickAction: () -> Unit) {this.setOnClickListener {if (this.hashCode() ! hash) {hash thi…

C#网络编程(同步传输字符串) - Part.2

服务端客户端通信 在与服务端的连接建立以后&#xff0c;我们就可以通过此连接来发送和接收数据。端口与端口之间以流&#xff08;Stream&#xff09;的形式传输数据&#xff0c;因为几乎任何对象都可以保存到流中&#xff0c;所以实际上可以在客户端与服务端之间传输任何类型的…

Factory Method工厂方法

“对象创建“模式 通过”对象创建“模式绕开new&#xff0c;来避免对象创建(new)过程中所导致的紧耦合&#xff08;以来具体类&#xff09;&#xff0c;从而支持对象创建的稳定。它是接口抽象之后的第一部工作。 典型模式&#xff1a;Factory Method&#xff0c;Abstract Facto…

centos 关闭防火墙_CentOS7操作系统下如何关闭防火墙

centos系统如果不关闭防火墙在使用中会遇到不少问题&#xff0c;而且centos7和centos6关闭防火墙的方式不一样。centos6:1.永久性生效&#xff0c;重启后不会复原开启&#xff1a; chkconfig iptables on关闭&#xff1a; chkconfig iptables off2.即时生效&#xff0c;重启后复…

web 网页按比例显示图片 js

原文链接&#xff1a;http://blog.csdn.net/liqinghuiyx/article/details/5442349 在动态站点上经常需要上传自己的图片&#xff0c;而这些图片的大小是未知的&#xff0c;在显示成缩略图的时候必须进行按比例的缩放才能美观地显示。以最近做的golf网站&#xff08;http://www…

黑马C++设计模式1

设计模式的基础是&#xff1a;多态。 设计模式综览表&#xff1a; 单例模式&#xff1a;是保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 简单工厂模式&#xff1a;通过专门顶一个一个类来负责创建其它类的实例&#xff0c;被创建的实例通常都具有共同的父…

对于未来的一点思考

最近在思考一个问题&#xff1a;以后的发展路线。   自己算是走上了IT的道路&#xff0c;但现在也只是在程序员阶段&#xff0c;当然还未毕业&#xff0c;以后的路还很长&#xff0c;但是这个问题确是现在或以后不得不面对的一个问题。  上学期未那两个月&#xff0c;去了N…

深入解析react关于事件绑定this的四种方式

这篇文章主要介绍了详解react关于事件绑定this的四种方式&#xff0c;写的十分的全面细致&#xff0c;具有一定的参考价值&#xff0c;对此有需要的朋友可以参考学习下。如有不足之处&#xff0c;欢迎批评指正。 在react组件中&#xff0c;每个方法的上下文都会指向该组件的实例…

Apache的认证、授权、访问控制

原文链接&#xff1a; http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/howto/auth.html Apache认证、授权、访问控制 认证(Authentication)是指任何识别用户身份的过程。授权(Authorization)是允许特定用户访问特定区域或信息的过程。 相关模块和指令 认证和授权…

黑马C++设计模式2

简单工厂模式 //一般来说&#xff0c;自己创建一个对象的方法是在自己写的业务函数中直接new一个对象出来//但是现实需求&#xff0c;我不想创建对象&#xff0c;我只想拿来用。&#xff08;创建类的步骤比较复杂&#xff09; //好处&#xff0c;1、客户端和具体实现类解耦。2…

[转]Struts 2.1发布

作者 Ian Roughley译者 崔康 发布于 2009年2月4日 上午8时13分 Struts2框架刚刚发布最新2.1版。该版本做了重大升级&#xff0c;包括重构更多代码到插件框架、通过增加convention插件减少XML配置和改进REST支持。 我采访了Musachy Barroso——该版本的一位开发人员&#xff0c…

dim private public static_PHP中const,static,public,private,protected的区别

const: 定义常量&#xff0c;一般定义后不可改变static: 静态&#xff0c;类名可以访问public: 表示全局&#xff0c;类内部外部子类都可以访问&#xff1b;private: 表示私有的&#xff0c;只有本类内部可以使用&#xff1b;protected: 表示受保护的&#xff0c;只有本类或子类…

C#图解教程 第六章 深入理解类

深入理解类 类成员 前两章阐述了9种类成员中的两种&#xff1a;字段和方法。本章将会介绍除事件(第14章)和运算符外的其他类成员&#xff0c;并讨论其特征。 成员修饰符的顺序 字段和方法的声明可以包括许多如public、private这样的修饰符。本章还会讨论许多其他修饰符。多个修…

Apache用户身份验证

原文链接&#xff1a;http://www.yylog.org/?p4830 Apache用户身份验证 在apache应用过程中&#xff0c;管理员经常需要对apache下的目录做一些限制&#xff0c;不希望所有用户都能访问该目录下的文件&#xff0c;只对指定用户访问&#xff0c;此时我们就要用到apache用户身…