设计模式(1)
程序员文章站
2024-01-03 20:07:04
注:本文章示例为C#代码,设计模式通用任何编程语言,可放心阅读 设计模式(3W1H) What?针对特定问题特出的特定的解决方案 Why?让程序有更好的可扩展度 Where?一般情况下,开发中真正使用设计模式的地方不多。面试 JVM底层机制 模式 框架底层应用了很多设计模式 How?任何时候、任何场 ......
注:本文章示例为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中)继承自抽象父类
未完,待续。。。