标签:
自从上次记录完“重构之道”以后,查询设计模式挺麻烦的。就打算把原先写的设计模式系列合并一下。
使用设计模式的根本原因就是适应需求变化,提高代码的复用率,使程序更具有扩展性和可维护性。
想必S.O.L.I.D大家都知道,面向对象的五大设计原则。其中C#设计模式,又添加了以下两条原则。总共是7大设计原则。
SRP(单一责任原则):只有一种原因会导致某个类的修改。让一个类只做一种类型责任,如需承担其他类型的责任时,应分解这个类。
OCP(开放封闭原则):软件实体(类,函数,模块等)应该对扩展开放,对修改关闭。每发生变化,需要通过添加新代码来增强类型的行为,而不是修改原有代码。
LSP(里氏替换原则):当子类替换掉他们的父类型,软件功能不受影响,父类才能真正使用,子类可以在父类的基础上添加新的行为。
ISP(接口隔离原则):使用专门的接口比使用单一的总接口要好很多。不要让单一接口承担过多的职责,针对职责进行接口分离。
DIP(依赖倒置原则):抽象不应该依赖于细节,细节应该依赖于抽象,面向接口编程。可以降低客户与具体实现的耦合。
CRP(合成复用原则):使用合成/聚合,尽量不要使用继承。在新的对象中,使用一些已有对象,让他成为新对象的一部分。
LOD(迪米特法则):一个模块或对象应尽量少与其他实体之间发生相互作用,使得系统相对独立,这样修改影响会减少,扩展会更容易。
用来创建对象的模式,抽象了实例化过程。有两个共同点。1.都将使用的具体类进行封装。2.隐藏类的实例是如何被组织创建的。
确保一个类只有一个实例,并提供一个全局访问点。
//使用单例模式创建类 public class Goddess { //封装具体类 private static Goddess _goddess; //使用lock锁,定义锁定的静态变量 private static object _obj = new object(); //创建全局访问点 public static Goddess CreateGoddess() { if (_goddess != null) { return _goddess; } //使用lock锁过滤 lock (_obj) { if (_goddess == null) { _goddess = new Goddess(); } return _goddess; } } }
占位符
标签:
原文地址:http://www.cnblogs.com/chenxygx/p/5880949.html