您的位置:首页 > 其它

设计模式之简单工厂和单列的区别

2016-03-06 16:30 375 查看
[b] 1.什么是设计模式[/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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: