工厂模式,单例模式

工厂模式:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
设计模式:工厂模式,单例模式
《大话设计模式》

计算器
class JiSuanQi
{
private int a;

public int A
{
get { return a; }
set { a = value; }
}
private int b;

public int B
{
get { return b; }
set { b = value; }
}

//加法
public int Jia()
{
return a + b;
}

//减法
public int Jian()
{
return a - b;
}

//乘法
public int Cheng()
{
return a * b;
}

}

改进计算器
public class JiSuan
{
private int a;

public int A
{
get { return a; }
set { a = value; }
}
private int b;

public int B
{
get { return b; }
set { b = value; }
}

public virtual int YunSuan()
{
return 0;
}

}

//加法类
public class Jia:JiSuan
{
public override int YunSuan()
{
return base.A + base.B;
}
}

//减法类
public class Jian : JiSuan
{
public override int YunSuan()
{
return base.A - base.B;
}
}

//工厂类
public class GongChang
{
public static JiSuan DuiXiang(string s)
{
switch(s)
{
case "+":
return new Jia();
break;
case "-":
return new Jian();
break;
case "*":
return new Cheng();
break;
default:
return new Jia();
break;

}
}
}

单例模式:

控制一个类只能实例化一个对象

class Test
{
 public string name;
}

数据访问类
class DBDA
{
public string host;
public string database;

静态成员,用来存储该类的对象
public static DBDA db = null;

让该类不能被实例化
private DBDA()
{
}

提供一个造对象的方法,控制只能造一个对象
public static DBDA DuiXiang()
{
if (db == null)
{
db = new DBDA();
}

return db;
}
}

定义委托
public delegate void SuiBian(string s);

class Program
{
static void Main(string[] args)
{
Test t1 = new Test();
Test t2 = new Test();

DBDA db = DBDA.DuiXiang();
db.host = "localhost";
DBDA db1 = DBDA.DuiXiang();

委托
把方法参数化
SuiBian s = China;

s += America; //+=是绑定方法 -=去掉一个方法

事件
事件就是一种特殊的委托

调用语音方法
Speak(s);

Console.WriteLine();
Console.ReadLine();

面向对象三大特性
设计模式
}

语音功能的方法
static void Speak(SuiBian yu)
{
yu("张三");

if (n == 0)
{
 America();
}
else if (n == 1)
{
 China();
}
else if (n == 2)
{
HanYu();
}

}

语音包
public static void America(string s)
{
Console.WriteLine(s+"hello");
}
static void China(string s)
{
Console.WriteLine(s+"你好");
}
static void HanYu(string s)
{
Console.WriteLine(s+"bjdkaj");
}

}
}

时间: 2025-01-01 15:21:33

工厂模式,单例模式的相关文章

策略模式+简单工厂模式+单例模式:简单推送服务

一.功能: 实现  获取数据  —>根据用户订阅清单进行推送 —> 这里的推送方式:QQ.Email.App.插件等等 用户可多选推送方式. 二.实现 1.推送方式—枚举(位运算): [Flags] public enum PushType { QQ = 0, Email = 2 } 2.策略模式:抽象推送策略 public interface IPush { bool Push(object data); } 3.QQ推送+Email推送 QQ推送:单例模式—静态创建QQ推送服务,线程安全.

(一)Python入门-6面向对象编程:12设计模式之工厂模式-单例模式

一:工厂模式实现 设计模式是面向对象语言特有的内容,是我们在面临某一类问题时候固定的做法,设计 模式有很多种,比较流行的是:GOF(Goup Of Four)23 种设计模式. 工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类.创建对象进 行统一的管理和控制. [操作] #工厂模式实现 class CarFactory: def creatCar(self,brand): if brand == '奔驰': return Benz() elif brand == '宝马': re

PHP------单例模式和工厂模式

单例模式和工厂模式 单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的.所有的单例模式至少拥有以下三种公共元素:1. 它们必须拥有一个构造函数,并且必须被标记为private2. 它们拥有一个保存类的实例的静态成员变量3. 它们拥有一个访问这个实例的公共的静态方法单例类不能再其它类中直接实例化,只能被其自身实例化.它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用. 例子: 1 class Single { 2 private $nam

单例模式和工厂模式(百度文库)

模式中的单例模式分为:饿汉模式和懒汉模式. 顾名思义: 饿汉模式是对食物(Singleton)比较渴望的,所有一开始就new了一个来满足(食欲) 饿汉式: public class Singleton{   private static Singleton singleton = new Singleton ();   private Singleton (){}   public static  Singleton getInstance(){return singletion;}   } 饿

php基础---单例模式&&工厂模式

//PHP设计模式 //工厂模式:工厂类 用于创建对象 interface Dongwu { function say(); } class Mao implements Dongwu { public function say() { echo "喵喵!我是一只小野猫!"; } } //工厂类,用来创建猫类 class GongChang { public static function GetObj($className) { return new $className(); }

php面向对象单例模式、工厂模式及6大原则

一.单例模式目的:为了控制对象的数量(只能够有一个,相当于类的计划生育)做法1.将类的构造函数做成私有的2.在类里面做了一个公有的函数来造对象3.将该函数变为静态的4.在函数里面加控制 class Ren { public $name; static public $dx; //静态成员变量用来存储该对象 private function __construct() //把构造函数设置为私有,类的外部就不能用new造对象了 { } static function DuiXiang() //做一个

php单例模式与工厂模式

单例模式:单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的. 所有的单例模式至少拥有以下三种公共元素:1. 它们必须拥有一个构造函数,并且必须被标记为private2. 它们拥有一个保存类的实例的静态成员变量3. 它们拥有一个访问这个实例的公共的静态方法 代码: <?php class ren { public $name; private static $dx;//存储对象 //声明一个私有的实例变量 private function __c

PHP 设计模式 笔记与总结(6)基础设计模式:工厂模式、单例模式和注册树模式

三种基础设计模式(所有面向对象设计模式中最常见的三种): ① 工厂模式:使用工厂方法或者类生成对象,而不是在代码中直接new 在 Common 目录下新建 Factory.php: <?php namespace Common; class Factory{ static function createDatabase(){ //$db = new \Common\Database; $db = new Database; return $db; } } index.php: <?php de

单例模式和工厂模式的简单理解

//什么是单例模式?//单例模式就是在核心就够中只包含一个被称作单例的特殊的类,通过单例模式可以保证系统中一个类只有一个实例,也就是说一个类只有一个对象实例using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class danli { static void Main(s

java:常用的两种设计模式(单例模式和工厂模式)

一.单例模式:即一个类由始至终只有一个实例.有两种实现方式(1)定义一个类,它的构造方法是私有的,有一个私有的静态的该类的变量在初始化的时候就实例化,通过一个公有的静态的方法获取该对象.Java代码 1. //单例模式的第一种形式    2. public class Singleton01 {    3.    4.     // 私有的静态属性    5.     private static Singleton01 instance = new Singleton01();    6.