zoukankan      html  css  js  c++  java
  • 大话设计模式总结4—总图和一些经典定义


     

    大话设计模式总结,应该就到此为止了。在总结的过程中,本想着摆一些《大话设计模式》书中提到的一些经典案例,“无奈”,自己不知哪一个模式值得摆一摆。我想等以后学习过程中遇到再说吧!下面是我根据《大话设计模式》绘制的一张图和在敲写中提到的一点的经典定义,在此贴一下与大家共享。




    (注:点击此图可链接到大图)


    对象是一个子包含的实体,用一组识别的特性和行为来标识。

    类就是具有相同的属性和功能的对象的抽象的集合。

     

    构造方法,又叫构造函数,其实就是对类进行初始化。构造方法与类同名,无返回值,也不需要void,在new时调用。

    Class是表示定义类的关键字。

    第一,  类名称首字母记得要大写。多个单词则各个首字母大写;

    第二,  对外公开的方法需要public修饰符。

    实例,就是一个真实的对象。实例化就是创建对象的过程。使用new关键字来创建。

    所有类都有构造方法,如果你不改变系统默认生成空的构造方法,若你有定义的构造方法,那么默认的构造方法就是失败。

     

    方法重载:方法重载提供了创建同名的多个方法的能力,但这些方法需使用不同的参数类型。方法重载是,两个方法必须要方法名相同,但参数类型或个数必须要有所不同。方法重载可在不改变原有方法的基础上,新增功能。

    属性:属性是一个方法或一对方法,的女士调用它的代码看来,他是一个字段,即属性适合于以字段的方式使用方法调用的场合。字段是存储类要满足其设计所的数据,字段是与类相关的变量。

    public表示它所修饰的成员可以允许其他任何类来访问,俗称共有的。

    Private表示只允许同一个类中的成员访问,其他类包含它的子类无法访问,俗称私有的。

    通常字段都有private,即私有的变量,而属性都是public,即共有的变量。

    属性有两个方法get和set。Get访问器返回与声明的属性相同的数据类型,表示的意思是调用时可以得到内部字段的值或引用;set访问器没有显示设置参数,但有一个隐式参数,用关键字value表示,他的作用是调用属性时可以给内部的字段或引用赋值。

     

    封装:

    每个对象都有包含它能进行操作所需要的所有信息,这个特性成为封装,因此对象不必依赖其他对象来完成自己的操作。

    封装好处:

    第一、     良好的封装能够减少耦合,

    第二、     类内部的而实现可以自由的修改

    第三、     类具有清新的对外接口

    继承:

    如果有两个对象A和B,可以描述为B是A,则表明B可以继承A.

    继承着还可以理解为师对象被继承者的特殊化,因为他除了具备被继承者的特性外,还具有自己独有的个性。

    继承定义了类如果相互关联,共享特性。继承的工作方式是,定义父类和子类,或叫做基类和派生类,其中子类继承父类的所有的特性。子类不但继承了父类的所有特性,还可以定义新的特性。

    学习继承最好是记住三句话,如果子类继承于父类,第一、子类拥有父类非private的属性和功能;第二、子类具有自己的属性和功能,即子类可以扩展父类的没有的属性和功能;第三、子类还可以以自己的方式实现父类的功能(方法重写)。

    Protected表示继承时子类可以对基类有完全访问权。

    子类从它的父类中继承的成员有方法、域、属性、事件、索引指示器,但对于构造方法,有些特殊,他不能被继承,只能被调用。对于调用父类的成员,可以用base关键字。

    继承的优点:继承是的所有子类公共的部分都放在了父类,使得代码得到了共享,这就避免了重复,另外,继承可使得修改或扩展继承而来的实现都较为容易。

    多态:

    多态表示不同的对象可以执行相同的动作,但是要通过他们自己的实现代码来执行。

    子类以父类的身份出现。子类特有的属性和方法不可以使用。

    为了使子类的实现完全接替来自父类的二类成员,父类必须将成员生命为虚拟的。这是通过在该成员的返回类型之前添加virtual关键字来实现。

    子类可以选择使用override关键字,将父类实现替换为它的自己的实现,这就是方法重写overried,或者叫做方法覆写。

    多态的原理是当方法被调用时,无论对象是否被转换为父类,都只有位于对象继承最末端的方法实现会被调用。也就是说,虚方法是按照其运行时类型而非编译时类型进行动态绑定调用的。

     

    抽象类:C#允许把类和方法声明为abstract,即抽象类和抽象方法。

    抽象类不能实例化;抽象方法是必须被子类重写的方法;如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其他一般方法。

    抽象类拥有尽可能多的共同代码,拥有尽可能少的数据。

    抽象类通常代表一个抽象概念,它提供一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的,所以在一个以继承关系形成的等级结构里面,树叶节点应当是具体类,而树枝节点均应当是抽象类。

     

    接口:接口时把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式。

    实现接口的类就必须要实现接口中的所有方法和属性。

    一个类可以支持多个接口,多个接口也可以支持相同的接口。

    接口的命名前面要加一个“I”,这是规范。

    接口用interface声明,而不是class,接口名称前要加“I”,接口中的方法或属性前面不能有修饰符、方法没有方法体。

     

    抽象类可以给出一些成员的实现,接口却不包含承压U您的恶实现,抽象类成员可被子类部分是实现,接口的成员需要实现类完全实现,一个类只能继承一个抽象类,但是实现多个接口等等。

    第一、     类是对象的抽象;抽象类是对类的抽象;接口是对行为的抽象。

    第二、     如果行为跨越不同类的对象,可使用接口;对于一些相似的类对象,用继承抽象类。实现接口和继承抽象类并不冲突。

    第三、     从设计角度讲,抽象类是从子类中发现了子类中发现了公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知子类的存在,方法如何实现还不确认,预先定义。    通过重构改善既有代码的设计。

    集合:

    数组优点:比如数组在内存中连续存储,因此可以快速而容易的从头到尾遍历元素,可以快速修改元素等等。

    数组缺点:创建时必须要制定数组变量的大小,还有在来那个元素之间添加元素也比较困难。

     

    .NET.Framework提供了用于数据存储和检索的专用类,这些类统称为集合。这些类提供对对栈、队列、列表和哈希表的支持。大多数集合类实现相同的接口。

     

    ArrayList是命名空间System.Collections下的一部分,他是使用大小可按需动态添加的数组实现IList接口。

    ArrayList的容量是ArrayList可以保存的元素数。ArrayList的默认初始容量为0.随着元素添加到ArrayList中,容量会根据需要重新分配自动添加。使用帧数索引可以访问此集合中的元素。此集合中的索引从零开始。

     

    装箱就是把值类型打包到Object引用类型的一个实例中。

    拆箱就是指从对象中提取值类型。

    泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构、接口和方法所存储或使用的一个活多个类型的占位符。泛型集合类可以将类型参数用作它所存储的对象的类型的占位符;类型参数作为其字段的类型和其方法的参数类型出现。

    委托时对函数的封装,可以当作给方法的特征指定一个名称。而事件则使委托的而一种特殊形式,当发生有意义的事情时,事件对象处理通知过程

    委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。

     


     

  • 相关阅读:
    HDU 1492 The number of divisors(约数) about Humble Numbers
    HDU 2700 Parity
    HDU 4104 Discount
    _getch() 函数,应用于输入密码敲入回车前修改
    函数指针|指针函数|C文件操作
    20160504
    数组指针|指针数组
    短路运算|字符串操作函数|内存mem操作函数
    C/C++ typedef
    Union
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3002598.html
Copyright © 2011-2022 走看看