熟练掌握和应用面向对象设计七大原则,是初中级工程师向高级/资深工程师进阶的一个必备技能。他可以大大的提升程序的可复用性和可维护性是重构代码的一大利器。
本人菜鸟一枚本面文章的出发点是1.加深个人印象。2.作为笔记记录。3.分享。文章中有描述的不到位或者不正确的地方各位大佬多多指出多多包涵。
使用设计模式的根本原因是适应变化,提升代码的复用率,扩展性,维护性和可读性。在设计时需要遵守以下七大原则:
⑴ 单一职责原则
⑵ 开放封闭原则
⑶ 依赖倒置原则
⑷ 里氏替换原则
⑸ 接口隔离原则
⑹ 组合复用原则
⑺ 迪米特原则
单一职责原则
类的职责要单一不能有多个职责,具有多个职责的类要进行重构拆分,形成单一职责的类。就一个类而言,应该只有一个引起它变化的原因,如果一个类承担的责任过多,就等于把这些职责耦合在一起。举个例子:
class Dog
{
public string name;
public int age;
public void Eat()
{
Console.WriteLine("吃狗粮");
}
public void Log(string log)
{
Console.WriteLine(log);
}
}
以上代码变量name,age和函数Eat都属于Dog类的职责,但是Log函数并不属于Dog类的职责,因此需要将Log函数重新形成一个类,并应用到Dog类中,修改如下:
class Program
{
static void Main(string[] agrs)
{
Dog dog = new Dog();
dog.name = "蛋蛋";
dog.age = 3;
dog.Eat();
Logger logger = new Logger();
logger.Log(string.Format("name:{0},age:{1}", dog.name, dog.age));
}
}
class Dog
{
public string name;
public int age;
public void Eat()
{
Console.WriteLine("吃狗粮");
}
}
class Logger
{
public void Log(string log)
{
Console.WriteLine(log);
Console.Read();
}
}
从上面代码可以看出,原本耦合性很高的Dog中的Log,已经从该类中解耦,形成松耦的代码复用性更好。