注:本文章示例为C#代码,设计模式通用任何编程语言,可放心阅读
设计模式(3W1H)
What?针对特定问题特出的特定的解决方案
Why?让程序有更好的可扩展度
Where?一般情况下,开发中真正使用设计模式的地方不多。面试---JVM底层机制 模式 框架底层应用了很多设计模式
How?任何时候、任何场合、任何语言都符合自己所制定的规则
一.单例模式
一个类只有一个全局实例
//构造私有
private FrmPlay()
{
InitializeComponent();
}
//2.静态成员变量
private static FrmPlay play;
//3.定义一个公有的 静态的 返回类类型的方法
public static FrmPlay GetInstance()
{
if (play==null)
{
play = new FrmPlay();
}
return play;
}
//省略调用代码
保证步骤:单例(一个类在内存中只能有一个对象)三条件
1. 类构造设置私有
2. 定义一个私有的静态的类类型变量
3. 定义一个共有的静态方法 并且方法返回值类型为类类型的方法
二.简单工厂模式
一个工厂方法,依据传入的参数,生成对应的具体产品对象;
工厂方法一般设成静态方法,返回值一般是抽象类或接口,具体的产品类一般继承或实现抽象类、接口;
优点:产品使用者不需要关心产品类的创建过程,与具体产品的实现类达到解耦的效果;
缺点:违背"开放--封闭"原则(OCP),因为新增一个产品类的时候,需要修改原先的工厂方法;
适用场合:当工厂类负责创建的对象比较少的时候;
public static Calculater GetInstace(string oper)
{
//父类
Calculater calc = null;
//3.进行判定 运算符和 + -
switch (oper)
{
/*
*各子类---里氏替换原则
**/
case "+":
calc = new Add();
break;
case "-":
calc = new Sub();
break;
case "*":
calc = new Multi();
break;
case "/":
calc = new Div();
break;
default:
break;
}
return calc;
}
保证步骤:
1.创建的对象比较少
2.公有静态返回值为父类类型的方法
3.里氏替换的子类(也就是swich中)继承自抽象父类
未完,待续。。。