设计模式(2)——创建型模式
对设计模式学了有一段的时间了,设计模式是软件工程的基石,他是人们反复使用的,程序员们几十年的经验总结,以“开放—封闭”、“单一职责”、“依赖倒转”、“里氏代换”、“合成聚合复用”、“迪米特法则”、“接口隔离”为基本原则。
本篇博客我对创建型模式进行总结,其中包括:单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。
1. 单例模式
这是最简单的一个模式,保证一个类仅有一个实例,并提供一个访问他的全局访问点。可以严格的控制客户怎样访问它以及何时访问它。简单地说就是对唯一实例的受控访问。它的秘密武器是创建私有的构造函数。(就像中国只能有一个,任何人不可分割)
UML图:
代码:
view plaincopy to clipboardprint?namespace 单例模式
{
class Class1
{
static void Main(string[] args)
{
Singleto s1 = Singleto.GetInstance();
Singleto s2 = Singleto.GetInstance();
//Singleto s3 = new Singleto();
if (s1 == s2)
{
Console.WriteLine("两个对象是相同的实例");
}
Console.Read();
}
}
class Singleto
{
private static Singleto instance;
private Singleto() //让构造方法私有,不能使用new实例化
{ }
public static Singleto GetInstance()
{
if (instance == null)
{
instance = new Singleto();
}
return instance;
}
}
}
namespace 单例模式
{
class Class1
{
static void Main(string[] args)
{
Singleto s1 = Singleto.GetInstance();
Singleto s2 = Singleto.GetInstance();
//Singleto s3 = new Singleto();
if (s1 == s2)
{
Console.WriteLine("两个对象是相同的实例");
}
Console.Read();
}
}
class Singleto
{
private static Singleto instance;
private Singleto() //让构造方法私有,不能使用new实例化
{ }
public static Singleto GetInstance()
{
if (instance == null)
{
instance = new Singleto();
}
return instance;
}
}
}
2 . 工厂方法模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。(就像服装生产工厂,有专门生产袜子的工厂,有专门生产内衣的工厂)
UML图:
代码:
view plaincopy to clipboardprint?namespace 工厂模式
{
class Class1
{
static void Main(string[] args)
{
IFactory operFactory = new AddFactory();
Operation oper = operFactory.CreateOperation();
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult();
Console.WriteLine(result );
}
}
interface IFactory //工厂接口
{
Operation CreateOperation();
}
class AddFactory : IFactory //加法工厂
{
public Operation CreateOperation()
{
return new OperationAdd();
}
}
class SubFactory : IFactory //减法工厂
{
public Operation CreateOperation()
补充:软件开发 , Java ,