zoukankan      html  css  js  c++  java
  • 单一职责-依赖倒转-代理模式-迭代器模式等

    单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。

    开放封闭原则:对于扩展是开放的,对于修改是封闭的。无论模块是多么的"封闭",都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择。他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要。

    依赖倒转原则:抽象不应该依赖细节,细节应该依赖于抽象,说白了就是要针对接口编程,依赖抽象或接口编程。

    里氏替换原则:只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正的被复用,而子类也能够在父类的基础上增加新的行为。
    里氏替换原则:父类引用指向子类对象Person p=new Chinese();(隐式类型转换)
    里氏替换原则:定义一个方法的时候,返回类型是父类型,而实际返回是子类型的对象

    代理模式:为其他对象提供一种代理以控制对这个对象的访问。例:秀才让小六代其求婚。

    迪米特法则(最少知识原则):如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用,强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限。也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为就不要公开,其根本思想是强调了类之间的松耦合。


    迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。---foreach in
    迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可以让外部代码透明地访问集合内部的数据。


    foreach执行原理
    foreach来循环遍历某类型,这个类型必须实现了IEnumerable接口,实现public IEnumerator GetEnumerator()方法
    GetEnumerator()方法该方法返回IEnumerator类型的对象,此方法不是用来遍历,而是用来得到一个迭代器,这个迭代器才是用于遍历的对象
    foreach循环是只读的,不能用来修改数据
    foreach循环式只进的,并且是一条一条循环的

    #region 自定义迭代器
    MyList list = new MyList() { Name="yzk",Age=18,Height=180};
    //foreach (var item in list)
    //{
    // Console.WriteLine(item);
    //}
    //拆解foreach执行过程:
    IEnumerator e1 = list.GetEnumerator();//foreach list
    if (e1.MoveNext())//in
    {

    var item = e1.Current;//enu.Current;迭代器中的指针,指向当前的元素
    Console.WriteLine(item);

    }
    if (e1.MoveNext())//in enu.MoveNext();完成指针的移动,逐个遍历所有元素,如果后边没有元素,则返回false
    {

    var item = e1.Current;
    Console.WriteLine(item);

    }

    if (e1.MoveNext())//in
    {

    var item = e1.Current;
    Console.WriteLine(item);

    }
    if (!e1.MoveNext())//这时已经没有项了,所以返回false退出循环
    {

    //break;
    Console.WriteLine("退出迭代器的遍历");

    }
    #endregion

  • 相关阅读:
    PDF文件中的Form保存问题
    Understanding IP Fragmentation
    tcp ip guide IPsec IKE
    Windows安全事件日志中的事件编号与描述
    Cisco PIX fix up and Juniper firewall FTP ALG
    很好的IPSec介绍,详细解释了IKE协商的2个阶段的作用
    virtualbox 下运行Ubuntu 8.10的分辨率和guest additions的问题。
    Fixing the ‘Do you want to display nonsecure items’ message
    windows xp 开始菜单里面所有项目右键不起作用。
    HP backup and recovery manager
  • 原文地址:https://www.cnblogs.com/xiaoweigogo/p/7793266.html
Copyright © 2011-2022 走看看