文斌的博客

学无止境
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

放假第三天

Posted on 2010-01-18 22:39  文斌1988  阅读(132)  评论(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();
        }
    }