昨天懒了,今天补上
读书笔记 大话设计模式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();
}
}