C#面向对象设计模式之前言

一、面相对象的三大机制(封装、继承、多态)

1、封装:实现内部的代码  2、继承:能够复用现有的代码   3、多态:重写对象的行为方法

学习C#的语言,我们都知道三大机制的语法基础,就像学习课本一样,先学习认识字一样,不过懂的面向对象三大机制不代表我们懂得了面向对象方面的设计,学习面向对象机制所带来的抽象意义,并且使用面向对象的思维更好地表达现实世界。

二、软件设计

为什么需要软件设计?我们记住软件设计的终极目标是复用。软件设计可以让我们的系统模块与模块之间的关系变得松耦合,有利于后期代码的维护和扩展,如果说把一家公司的每种员工计算工资的方式糅合在一个方法里面,在这个方法中通过员工类型的判断,然后各自写一个计算工资的方式,在现有的员工职位是能够满足系统的需要,但是如果公司再新增一种职位,如我们都喜欢的“程序员鼓励师” ,那么我是不是再要找到这个方法并且继续修改这个方法来新加一个“鼓励师”工资的计算方式呢! 这种方式不能满足程序的变化,而且破坏了我们常说的“开闭原则----对修改封闭,对扩展开放”。要对软件进行设计,必须要理解客户的需求,必须对系统进行深入的分析,不要一接到项目上来就盲目套设计模式,这是很危险的行为,切记切记!因为设计模式就是为了模拟解决生活中问题。

三、软件设计复杂度的根本原因——变化

世间万物没有一层不变的东西,有些变得很快,有些会变得很慢,而且在生活中应对客户的需求、市场的变化、技术的发展都有可能造成事物在不断的更新和发展。所以导致有很多复杂的问题,我们要懂得把复杂的问题分解为多个简单问题进行处理,从更高层次来说,我们需要学会发现它们的共性,更具体来讲就是本质,忽略它们的非本质细节,而去处理泛化和理想化的对象模型,面向对象最大的优势在于可以抵御变化,所以说我们懂得封装、继承和多态并不等于我们掌握了面向对象编程。

四、重新认识面向对象

1.隔离变化

面向对象的构建要适应软件的变化,能将变化影响降低到最小。

2.各司其职

面向对象强调各类的职责,新增员工类型不会影响到原来员工类型的实现代码,这更加地符合真实的世界,也能控制变化所影响的范围。

3.认识对象

从概念来讲:对象拥有某种责任的抽象。

从规格来讲:对象是一系列可被使用的公共接口。

从语言实现来讲:对象封装了代码和数据。

五、面向对象设计准则

1.针对接口编程,而不是针对实现编程,客户无需知道使用对象的实际类型,只需知道拥有客户所期望的接口。

2.优先使用对象组合,而不是类继承,继承在某种程度上破坏了封装性,子父类耦合度高,而对象的组合只要求被组合的对象具有良好定义的接口,耦合度低。

3.封装变化点,使用封装创建对象之间的分解层,让设计者可以在分层的一侧进行修改,而不会对另一侧产生不良的影响,从而实现层次间的松耦合。

时间: 2024-11-15 12:35:47

C#面向对象设计模式之前言的相关文章

面向对象设计模式5大基本原则

"宇宙万物之中,没有一样东西能像思想那么顽固."        一爱默生 首先明确模式是针对面向对象的,它的三大特性,封装.继承.多态. 面向对象设计模式有5大基本原则:单一职责原则.开发封闭原则.依赖倒置原则.接口隔离原则.Liskov替换原则. 而设计模式都是在面向对象的特性以及5大基本原则的基础上衍生而来的具体实现. 1.单一职责原则(SRP): 1.1,SRP(Single Responsibilities Principle)的定义:就一个类而言,应该仅有一个引起它变化的原因

PHP面向对象设计模式

PHP设计模式——概述 常见的面向对象设计模式大约有23种,但是自从接触PHP后,渐渐发现常见的设计模式好像少了很多,网络上的资料也比较少,身边的PHP同事们有的甚至没有听说过设计模式,这也有可能是PHP的发展所带来的,因为PHP对面向对象支持的比较晚,好多PHP程序员还按照面向过程的思想写代码.于是,我决定把原来用C#写的面向对象设计模式用PHP改写. 经常听见其他程序员(Java. C#)等说PHP是不是运行在浏览器端的脚本语言,其实我在接触PHP之前也这样认为过,后来发现PHP是用C语言开

设计模式学习笔记(一)——面向对象设计模式与原则

1.设计模式的概念 设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案. 2.面向对象设计模式 面向对象设计模式描述了类与相互通信的对象之间的组织关系.目的是应对变化.提高复用.减少改变. 3.什么是对象: 1)从概念层面讲,对象是某种拥有职责的抽象: 2)从规格层面讲,对象是一系列可以被其他对象使用的公共接口: 3)从语言实现层面来看,对象封装了代码和数据(也就是行为和状态).如果我们抛开代码的实现来看对象的概念,那么它应该就像个具体的物体,比如说:榔头,从概念层面讲,榔头有它的职责

面向对象设计模式与原则

最近在学习李建忠老师一系列的关于面向对象设计模式的课程,就想着把总结下来,以便自己以后的学习,设计模式是一个比较空洞的话题,随着我们的编程经验的积累,我们能增加对它的理解,这是一个日积月累的过程,但是我们应该在平时的编程过程中学会思考和分析,想一想在某种特定的场景下使用什么样的设计模式,怎样才能做到代码的易扩展和维护,这都是我们要思考的问题,所以掌握好设计模式能对我们的编程起到很大的作用,能让我们写出来的代码很美. 设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案,面向对象的设计模式

第8篇-JAVA面向对象-设计模式Ⅳ

第8篇-JAVA面向对象-设计模式Ⅳ 每篇一句 : 想象是程序的创作之源 初学心得 : 平静的海洋练不出熟练的水手 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-11| JAVA面向对象 Ⅳ] JAVA设计模式 什么是JAVA设计模式以及作用? 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结 使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性,本篇将介绍10种JAVA常用设计模式 1.JAVA 设计模式 - 单例设计模式 单例模

面向对象设计模式 总结归纳 01

写这篇文章的用意是便于记忆,发布出来是为了能给一些初学者一些帮助.每个人的理解都可能会有一些偏差,如果存在误解,请多多指正.谦虚并不一定就代表不自信,人无完人,学无止境,谦虚使人进步,传递正能量. 面向对象设计模式,是描述面向对象设计过程中,特定场景下"类"与"相互通信的对象"之间的场景的组织关系. 为方便阅读,下面描述的"面向对象设计模式",简称为"设计模式". 为什么要使用设计模式?不用设计模式,软件也能开发,也可以做到正

面向对象设计模式总结

软件设计模式的产生背景 这一篇是后面学习的基础,它从整体上介绍软件设计模式的概念与特点.软件设计模式的基本要素,以及设计模式的由来. “设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1977 年,美国著名建筑大师.加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作<建筑模式语言:城镇.建筑.构造(A Pattern Language: Towns Building Construction)中描述了一

C#面向对象设计模式纵横谈——2.Singleton 单件(创建型模式)

一:模式分类 从目的来看: 创建型(Creational)模式:负责对象创建. 结构型(Structural)模式:处理类与对象间的组合. 行为型(Behavioral)模式:类与对象交互中的职责分配. 从范围来看: 类模式处理类与子类的静态关系. 对象模式处理对象间的动态关系. 二:Singleton (创建型模式) 单件 1.动机(Motivation) 软件系统中,经常有这样一些特殊的类,必须保证他们在系统中只存在一个实例,才能确保它们的逻辑正确性,以及良好的效率. 如何绕过常规的构造器,

C#面向对象设计模式纵横谈——6.Prototype 原型模式(创建型模式)

动机(Motivation) 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作.由于需求的变化,这些对象经常面临着剧烈的变化,但他们却拥有比较稳定一致的接口. 如何应对这种变化?如何向“客户程序(使用这些对象的)”隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求的改变而改变. 意图(Intent) 使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象.   ----<设计模式> GOF 结构(Structure)