简单工厂和单例设计模式浅解
什么是设计模式?
我们知道《孙子兵法》是行军打仗的战术的书籍。有了好的战术才能将军队现有的战斗力发挥到最大化。而我们编写代码也一样需要“战术”,使用合适的战术能极大地提高编码的效率及程序的性能而且写出的代码也会非常好看!而设计模式就是我们码农的《孙子兵法》!
简单工厂
简单工厂通俗的来说就是我们通过传递参数给工厂类的静态方法得到我们想要的类型的对象。
比方说我们有一个比萨类培根比萨和奶油比萨都继承自比萨类我们就可以定义一个比萨工厂类给这个类一个静态方法在参数中出入要使用的比萨的种类在方法内部判断比萨的类型并返回给方法的调用方。
注意:方法是静态的,返回值类型是比萨类,通过参数判断是那种比萨!
demo:
1 //父类 2 public abstract class Piza 3 { 4 public string name; 5 public abstract void show(); 6 7 } 8 //子类 9 public class nailaopiza:Piza 10 { 11 public override void show() 12 { 13 Console.WriteLine("奶酪披萨"); 14 } 15 } 16 //子类 17 public class peigenpiza:Piza 18 { 19 20 public override void show() 21 { 22 Console.WriteLine("培根披萨"); 23 } 24 } 25 26 //工厂类 27 public class pizagongchang 28 { 29 public static Piza CreatePiza(string type) 30 { 31 Piza piza= null; 32 switch (type) 33 { 34 case "奶酪": 35 piza = new nailaopiza();//创建奶酪比萨 36 break; 37 case "培根": 38 piza = new peigenpiza();//创建培根比萨 39 break; 40 default: 41 break; 42 } 43 return piza;//返回对应的比萨 44 } 45 }
单例模式
单例模式要去一个类只能有一个对象
单例设计模式分一下几步完成
- 在类显示的定义一个私有构造。
- 定义一个私有,静态的本类类型变量
- 定义一个共有的静态方法返回第2步定义的静态变量,在方法内部判断静态变量是否为null,如果为null则先示例化此变量再返回,反之直接返回。
demo:
namespace 单利模式 { public class text { private text() { }//定义私有构造 private static text t;//定义私有的静态变量,数据类型是本类类型 public static text createtext() { if (t==null) { t = new text();//如果t为null则调用私有构造示例化t } return t;//将t返回给调用者 } } }