设计模式之简单工厂和单列的区别
2016-03-06 16:30
375 查看
[b] 1.什么是设计模式[/b]
* 解析:针对特定问题而提出特定的解决方案
简单工厂不算23种设计模式中的一种,--只是一个抽象工厂
[b] 2.什么简单工厂呢?[/b]
01.简单工厂的概念
一个普通的类,在该类定义一个方法;该方法是用静态(static)修饰,返回值为父类的类型,通常方法会带一个参数。
02.代码举例
03.父类与子类的代码
[b]3.单例[/b]
01.简单描述
跟简单工厂相似,只不过是单例只能想内存索要一块空间,相当于只能new一次。
在一个普通类中,先给该类定义一个静态(static)的变量,然后将该类的无参构造的修饰符共有的(public)改为私有的(private),
再定义一个静态(static)的方法,返回值类型为该类,最后判断该类是否有new过,即向内存索要空间,如果没有就new,否则就return
会该类的变量即可。
02.代码如下所示
[b]如果觉得有什么不足之处,请各位能够留下您的观点,希望我们都能够学到知识、、、[/b]
* 解析:针对特定问题而提出特定的解决方案
简单工厂不算23种设计模式中的一种,--只是一个抽象工厂
[b] 2.什么简单工厂呢?[/b]
01.简单工厂的概念
一个普通的类,在该类定义一个方法;该方法是用静态(static)修饰,返回值为父类的类型,通常方法会带一个参数。
02.代码举例
public class PizzaFactory { //定义一个 static 并且返回值类型是 父类类型的方法 携带一个参数 public static Pizza getInstance(string type) { //01.定义一个父类类型的容器 ,用于保存对应的子类对象 Pizza pizza=null; switch (type) { case "奶酪比萨": pizza = new CheesePizza(); break; case "培根比萨": pizza = new PGPizza(); break; } return pizza; } }
03.父类与子类的代码
--父类 public abstract class Pizza //abstract关键字来修饰即为抽象类 { public abstract string Info();//抽象方法--留给子类来重写 } --子类 public class PGPizza:Pizza //继承 { public override string Info() //重写了方法 { return "您好,培根披萨订购完成!"; } --另一个子类 public class CheesePizza:Pizza { public override string Info() { return "您好,奶酪比萨成功订购"; }
[b]3.单例[/b]
01.简单描述
跟简单工厂相似,只不过是单例只能想内存索要一块空间,相当于只能new一次。
在一个普通类中,先给该类定义一个静态(static)的变量,然后将该类的无参构造的修饰符共有的(public)改为私有的(private),
再定义一个静态(static)的方法,返回值类型为该类,最后判断该类是否有new过,即向内存索要空间,如果没有就new,否则就return
会该类的变量即可。
02.代码如下所示
public class Person { public static Person p; //静态变量 private Person() //私有的构造函数 { } public static Person getInstance() //静态方法 返回值类型Person { if (p==null) //判断 { p=new Person(); //索要空间 } return p; //返回该类的变量 } }
[b]如果觉得有什么不足之处,请各位能够留下您的观点,希望我们都能够学到知识、、、[/b]
相关文章推荐
- Map <STL>
- 机房重构—删除用户析DataGridView
- 开发过程中的一些资料收集---
- 字符串分割函数strtok和strsep使用注意事项
- DOCKER学习待回答的问题!
- 从零开始学习EasyDarwin(RTSP之EventThread)
- 排序总结归纳
- iOS - Swift - 图书展示项目
- 三月活动之“桃花朵朵开 求爱上上签”
- 10. smarty 方法
- ZooKeeper原理及使用
- poj3660 Cow Contest
- Android BLE开发之Android手机与BLE终端通信
- 解决下载文件过程中内存暴涨之---OutputStream
- 软件工程概论阅读笔记1
- C#第三节课(1)
- 今天晴朗,但是由于晚上睡眠不是很好就头昏眼花
- Numpy中如何给矩阵增加一行或一列
- TYVJ 4354 多重背包二进制优化
- Latex 参考文献类型和写法