一.面向对象的设计原则
1.单一职责原则: 系统中每个对象只有一个单独的职责,对外提供一种功能,引起类变化的原因只有一个。
2.开闭原则:即对修改关闭,对扩展开放。要更改时是通过增加代码进行的,而不是改动现在的代码,否则会产生不可预知的后果。
3.依赖注入原则:要依赖于抽象,不要依赖于具体的实现,如果有类调用其他的类,就应该调用类的接口或者抽象类,而不是直接调用实现类。
4.里氏替换原则:任何抽象类出现的地方都可以用实现类来替换。
5.迪米特原则:一个对象应当对其他对象尽可能少的了解,降低耦合度。
6.接口分离原则:一个接口应该只提供一种对外功能。
7.优先使用组合而不是继承:继承会导致级联变化,较难修改。
二.单例模式
当一个对象在整个程序中只有一个的时候,每次获得该对象,应该获得都是同一个对象,这时候就应该用单例模式。
有两种,一种是饿汉式,饿得等不及了,一开始就创建了一个对象。
/*
单例模式(饿汉式)
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 设计模式Demo
{
class Singleton
{
static Singleton singleton = new Singleton();
public static Singleton GetSingleton()
{
return singleton;
}
public void Show()
{
Console.WriteLine("hehe!");
}
//构造函数私有化
private Singleton()
{ }
}
class Program
{
static void Main(string[] args)
{
Singleton.GetSingleton().Show();
Console.ReadLine();
}
}
}
另一种是懒汉式,先偷会儿懒,等到用的时候才创建:
/*
单例模式(懒汉式)
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 设计模式Demo
{
class Singleton
{
static Singleton singleton = null;
public static Singleton GetSingleton()
{
if (singleton == null)
singleton = new Singleton();
return singleton;
}
public void Show()
{
Console.WriteLine("hehe!");
}
//构造函数私有化
private Singleton()
{ }
}
class Program
{
static void Main(string[] args)
{
Singleton.GetSingleton().Show();
Console.ReadLine();
}
}
}
单例模式经常在文件管理,数据库连接池等中使用。