单例模式:

什么是单例模式?

针对特定问题提出的特定解决方案

为什么使用设计模式?

让程序有更好的可扩展性

在哪里使用?

一般情况下,开发中真正使用设计模式的地方,JVM(虚拟机)底层机制模式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Day08单例
{
//Play类
public class Play
{
//构造
private Play() { }
  private static Play play;
public static Play PlayOnlyOne(){ if(play==null){ play=new Play(); } return play; } } }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Day08单例
{
class Program
{
static void Main(string[] args)
{
Play p1 = Play.PlayOnlyOne();
Play p2 = Play.PlayOnlyOne();
Console.WriteLine(p1==p2); Console.ReadLine();
}
}
}

单例模式:一个类在内存中只能有一个对象(条件)

1.类的构造设为私有的

 //构造
private Play() { }

2.定义一个私有的静态的的类类型变量

private static Play play;

3.公有的静态的方法并且返回值类型为类类型的方法

 public static Play PlayOnlyOne(){
if(play==null){
play=new Play();
}
return play;
}

简单工厂模式:

简单工厂模式是类的创建模式,根据提供给它的数据返回几个可能类中的一个类的实例。

优点:工程类中包含了必要地逻辑判断,根据客户端的选择条件动态实例化相关的类,对客户端来说,去除了与具体产品的依赖

简单工厂模式关系图:

下面是一个关于加减乘除运算的简单工厂模式

定义一个父类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Sj4
{
public class Operation
{
public double Number1 { get; set; }
public double Number2 { get; set; }
public virtual double Reault() {
double result = ;
return result;
}
}
}

子类,分别用来计算加减乘除

加法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Sj4
{
public class OperationAdd:Operation
{
public override double Reault()
{
double result = Number1 + Number2;
return result;
}
}
}

//除法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Sj4
{
public class OperationDiv:Operation
{
public override double Reault()
{
if(Number2==){
throw new Exception("除数不能为0!");
}
double result = Number1 / Number2;
return result;
}
}
}

(减法、乘法同样方法)

将判断选择的是加减乘除的方法提取到一个类中。(为什么要提取到一类中呢?在你使用时不可能只有一个页面要用到相同的方法,为了避免代码的冗余,所以提取到一个类中)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Sj4
{
public class OperationFactory
{
public static Operation Gettance(string type){
Operation op = null;
switch (type)
{
case "+":
{
op = new OperationAdd();
break;
}
case "-":
{
op = new OperationReduce(); break; }
case "*":
{
op = new OperationRide();
break;
}
case "/":
{
op = new OperationDiv();
break;
}
}
return op;
} }
}

在选择时调用这个方法

   Operation operation= OperationFactory.Gettance(type);

XML解析

XML称为可扩展标记性语言,是eXtensible Markup Language的缩写。在.NET框架中XML是非常重要的一部分,他用于描述数据、是当前处理结构化文档信息的有力工具

操作XML的对象属性和方法

对象 属性和方法 说明
XmlDocument DocumentElement属性 获取根节点
ChildNodes属性 获取所有子节点
Load()方法 读取整个XML的结构
XmlNode InnerText属性 当前节点的值
Name属性 当前节点的名称
ChildNodes属性 当前节点的所有子节点
<?xml version="1.0" encoding="utf-8" ?>
<Books>
<Book>
<Bookid>101</Bookid>
<BookName>hah</BookName>
<BookAnthor>lala</BookAnthor>
</Book>
<Book>
<Bookid>102</Bookid>
<BookName>hoho</BookName>
<BookAnthor>xixi</BookAnthor>
</Book>
<Book>
<Bookid>103</Bookid>
<BookName>dudu</BookName>
<BookAnthor>bubu</BookAnthor>
</Book>
</Books>
<?xml version="1.0" encoding="utf-8" ?>是XML声明,version:文档符合XML1.0规范
encoding:文档字符编码,默认utf-8 解析XML文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace Sj1
{
class Program
{
static void Main(string[] args)
{

XmlDocument myXml = new XmlDocument();
myXml.Load("Book.xml"); //读取指定XML文件
XmlNode mynode = myXml.DocumentElement; //读取XML根节点
foreach(XmlNode node in mynode.ChildNodes){ //对子节点进行循环
//将子节点的内容显示出来
Console.WriteLine(node["Bookid"].InnerText + "\t" + node["BookName"].InnerText + "\t" + node["BookAnthor"].InnerText);
}
Console.ReadLine(); }
}
}

注意:一个xml文件只能有一个根节点

XmlElement继承XmlLinkeNode,XmlLinkeNode继承XmlNode

XmlNode是XmlElement爷爷

												

单例模式、简单工厂模式、XML解析的更多相关文章

  1. PHP面向对象-设计模式 单例模式 简单工厂模式 工厂方法模式

    1.单例模式 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例.即一个类只有一个对象实例. 要实现每一个类只有一个实例,就需 ...

  2. 在商城系统中使用设计模式----简单工厂模式之在springboot中使用简单工厂模式

    1.前言: 不了解简单工厂模式请先移步:在商城中使用简单工厂.在这里主要是对springboot中使用简单工厂模式进行解析. 2.问题: 什么是简单工厂:它的实现方式是由一个工厂类根据传入的参数,动态 ...

  3. 简单工厂模式—>工厂模式

    一.功能 根据前一篇博客:策略模式+单例模式+简单工厂模式:推送服务,想试用一下工厂模式:将之前的简单工厂模式格式化为工厂模式. 二.实现 修改前:简单工厂 public static class P ...

  4. 网络电视精灵~分析~~~~~~简单工厂模式,继承和多态,解析XML文档,视频项目

    小总结: 所用技术: 01.C/S架构,数据存储在XML文件中 02.简单工厂模式 03.继承和多态 04.解析XML文档技术 05.深入剖析内存中数据的走向 06.TreeView控件的使用 核心: ...

  5. 【Spring源码解析】—— 简单工厂模式的BeanFactory的超简版实现

    一.什么是简单工厂模式 设计模式的核心是“分工”,通过分工将对象与职责划分的更细化,进而提升系统设计的可扩展性,使其更容易维护. 开闭原则:对扩展开放,对修改关闭:要增加一个新的处理逻辑,可以开一个新 ...

  6. C#简单工厂模式和单列设计模式潜要解析

    简单工厂设计模式,又叫做静态工厂方法(Static Factory Method)模式,就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例. 简单工厂模式是工厂模式家族中最简单实用的模式.简单 ...

  7. Java 设计模式系列(二)简单工厂模式和工厂方法模式

    Java 设计模式系列(二)简单工厂模式和工厂方法模式 实现了创建者和调用者的分离.分为:简单工厂模式.工厂方法模式.抽象工厂模式 简单工厂模式.工厂方法模式都很简单,就不详细介绍了. 一.简单工厂 ...

  8. Java设计模式2:简单工厂模式

    简单工厂模式 简单工厂模式是类的创建模式,又叫做静态工厂方法模式.简单工厂模式由一个工厂对象决定生产出哪一种产品类的实例. 为什么要使用简单工厂模式 原因很简单:解耦. A对象如果要调用B对象,最简单 ...

  9. 深入浅出设计模式——简单工厂模式(Simple Factory)

    介绍简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用到,而且思想也非常简单,可以说是工厂方法模式的一个引导,所以我想 ...

随机推荐

  1. Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.annotation.Around

    1.错误描述 INFO:2015-05-01 11:12:15[localhost-startStop-1] - Root WebApplicationContext: initialization ...

  2. Cortex-M3

    大家听说过Cortex-M3吗?在嵌入式处理器的世界,cortex-M3是一位人见人爱的后生.它的成本和功耗低,可配置性很高.如今,很多ARM的工程师加入了cortex-M3的学习与开发中,WIZne ...

  3. 利用MD5加密字符串

    private static string MD5E(string temp) { MD5 md5 = new MD5CryptoServiceProvider(); byte[] source=Sy ...

  4. JS原生代码实现导航高亮

    一 实现原理 根据当前页面滚动条的高度判断当前页面应当与导航栏中哪个导航相关联,并对相应的导航设置高亮样式. 二 代码解析 先简单写一个页面顶端的导航栏:<nav>  <ul> ...

  5. Linux压缩、解压文件

    对于.tar格式的文件压缩和解压比较常用,今天对于.zip格式的文件用同样的命令无效.真是被自己蠢到了,忽略了后缀格式... 1.对于tar格式文件 压缩: tar –zcvf 压缩完后的名称  被压 ...

  6. UML类图10分钟快速入门

    虚线箭头指向依赖: 实线箭头指向关联: 虚线三角指向接口: 实线三角指向父类: 空心菱形能分离而独立存在,是聚合: 实心菱形精密关联不可分,是组合: 原文作者:圣杰 原文地址:http://www.j ...

  7. IOS开发之App被拒原因

    新手入门,简单记录一下Ipa提交给苹果公司后,有可能会被驳回的原因,欢迎补充和纠正! 原因: 1.ipa功能缺陷,譬如不能正常登陆.界面打不开.支付调不起等测试过程中未发现的Bug,实在是不应该!!! ...

  8. [BZOJ1012] [JSOI2008] 最大数maxnumber (ST表)

    Description 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. 插 ...

  9. python数据类型——字典类型

    字典(dictionary) python中唯一的映射类型,采用键值对(key-value)的形式储存数据,python对key进行哈希函数运算,所以key值必须是可哈希的,可哈希表示key必须是不可 ...

  10. c#事件的应用

    我已经多次使用c#事件了.举个最近的例子:我用vsto做的一个word插件.这个插件分为两层,业务逻辑层和word外接程序.有这么一个场景,我的ribbon中的一个label是动态显示的.它会随着wo ...