文斌的博客

学无止境
随笔 - 85, 文章 - 1, 评论 - 131, 阅读 - 26万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

放假第三天

Posted on   文斌1988  阅读(135)  评论(0编辑  收藏  举报

昨天懒了,今天补上

读书笔记 大话设计模式3~6章

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


开放关闭原则 开放关闭原则是面向对象设计的核心所在.遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护,可扩展,可复用,灵活性好.开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都可以的进行抽象同样不是一个好主意,拒绝不成熟的抽象和抽象本身一样重要.

通过抽象隔离可能出现错误的代码,方便以后修正

 

依赖原则  A高层模块不应该以来底层模块,两个动应该依赖抽象 B 抽象不应该依赖细节,细节应该以来抽象.

里氏代换原则 一个软件实体如果使用的是一个父类的话,那么一定使用于其子类,而且它察觉不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的子类,程序行为没有变化.     子类型必须能够替换掉它们的父类型 

只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为

 

装饰模式

 动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活

通过一个类将对象包装,每个装饰对象只关心自己的功能,不需要关心如何被添加到对象链中,

Person xc = new Person("小菜");
            Console.WriteLine("\n第一种装扮:");
            Sneakers pqx = new Sneakers(); 

   pqx.Decorate(xc);//此时 基类中方法 是 显示小菜的装扮
            pqx.Show();
//通过方法 将基类绑定到类中,然后根据需要执行基类中方法

 class Person
    {
        public Person()
        { }

        private string name;
        public Person(string name)
        {
            this.name = name;
        }

        public virtual void Show()
        {
            Console.WriteLine("装扮的{0}", name);
        }
    } 

   class Finery : Person
    {
        protected Person component;
        public void Decorate(Person component)
        {
            this.component = component;
        }
        public override void Show()
        {
            if (component != null)
            {
                component.Show();//base.show()
            }
        }
    }
  class Sneakers : Finery
    {
        public override void Show()
        {
            Console.Write("破球鞋 ");
            base.Show();
        }
    }

 

 

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示