设计模式学习草稿:简单工厂,工厂,抽象工厂
2017-07-11 00:37
274 查看
原文发布时间为:2008-11-27 —— 来源于本人的百度文章 [由搬家工具导入]
using System;
using System.Collections.Generic;
using System.Text;
namespace reviewBase
{
class Class1//简单工厂
{
static void Main()
{
string expression1 = "2+3";
ICalculate result1 = SimpleFactory.getCaculate(expression1);
Console.WriteLine(expression1 + "=" + result1.Excute(expression1));
string expression2 = "2-3";
ICalculate result2 = SimpleFactory.getCaculate(expression2);
Console.WriteLine(expression2 + "=" + result2.Excute(expression2));
Console.ReadLine();
}
}
public interface ICalculate
{
int Excute(string Expressions);
}
public class Add : ICalculate
{
public int Excute(string Expression)
{
string[] num = Expression.Split('+');
int a = int.Parse(num[0]);
int b = int.Parse(num[1]);
return a + b;
}
}
public class Sub : ICalculate
{
public int Excute(string Expression)
{
string[] num = Expression.Split('-');
int a = int.Parse(num[0]);
int b = int.Parse(num[1]);
return a - b;
}
}
public class SimpleFactory
{
public static ICalculate getCaculate(string Expression)
{
if (Expression.Contains("+"))
return new Add();
else
return new Sub();
}
}
}
---------------------------------
using System;
using System.Collections.Generic;
using System.Text;
namespace reviewBase
{
class Class2//工厂
{
static void Main()
{
string expression1 = "2+3";
IFactory test1 = new Factory1();
ICalculate result1=test1.getCaculate();
Console.WriteLine(expression1 + "=" + result1.Excute(expression1));
string expression2="2-3";
IFactory test2 = new Factory2();
ICalculate result2 = test2.getCaculate();
Console.WriteLine(expression2 + "=" + result2.Excute(expression2));
Console.ReadLine();
}
}
public interface ICalculate
{
int Excute(string Expressions);
}
public class Add : ICalculate
{
public int Excute(string Expression)
{
string[] num = Expression.Split('+');
int a = int.Parse(num[0]);
int b = int.Parse(num[1]);
return a + b;
}
}
public class Sub : ICalculate
{
public int Excute(string Expression)
{
string[] num = Expression.Split('-');
int a = int.Parse(num[0]);
int b = int.Parse(num[1]);
return a - b;
}
}
public interface IFactory
{
ICalculate getCaculate();
}
public class Factory1:IFactory
{
public ICalculate getCaculate()
{
return new Add();
}
}
public class Factory2 : IFactory
{
public ICalculate getCaculate()
{
return new Sub();
}
}
}
---------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
namespace reviewBase
{
class Class4//抽象工厂
{
static void Main()
{
Farm fruit1, vagetabel1,fruit2,vagetabel2;
fruit1 = new AFarm();
vagetabel1 = new AFarm();
fruit1.factoryFruitFarm().PrintName();
vagetabel1.factoryVagFarm().PrintName();
fruit2 = new BFarm();
vagetabel2 = new BFarm();
fruit2.factoryFruitFarm().PrintName();
vagetabel2.factoryVagFarm().PrintName();
Console.ReadLine();
}
}
public abstract class Farm
{
public abstract FruitFarm factoryFruitFarm();
public abstract VagetabelFarm factoryVagFarm();
}
public class AFarm : Farm
{
public override FruitFarm factoryFruitFarm()
{
return new Apple();
}
public override VagetabelFarm factoryVagFarm()
{
return new BaiCai();
}
}
public class BFarm : Farm
{
public override FruitFarm factoryFruitFarm()
{
return new Banana();
}
public override VagetabelFarm factoryVagFarm()
{
return new QingCai();
}
}
public abstract class FruitFarm
{
public abstract void PrintName();
}
public class Apple : FruitFarm
{
public override void PrintName()
{
Console.WriteLine("apple");
}
}
public class Banana : FruitFarm
{
public override void PrintName()
{
Console.WriteLine("banana");
}
}
public abstract class VagetabelFarm
{
public abstract void PrintName();
}
public class BaiCai:VagetabelFarm
{
public override void PrintName()
{
Console.WriteLine("白菜");
}
}
public class QingCai : VagetabelFarm
{
public override void PrintName()
{
Console.WriteLine("青菜");
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace reviewBase
{
class Class1//简单工厂
{
static void Main()
{
string expression1 = "2+3";
ICalculate result1 = SimpleFactory.getCaculate(expression1);
Console.WriteLine(expression1 + "=" + result1.Excute(expression1));
string expression2 = "2-3";
ICalculate result2 = SimpleFactory.getCaculate(expression2);
Console.WriteLine(expression2 + "=" + result2.Excute(expression2));
Console.ReadLine();
}
}
public interface ICalculate
{
int Excute(string Expressions);
}
public class Add : ICalculate
{
public int Excute(string Expression)
{
string[] num = Expression.Split('+');
int a = int.Parse(num[0]);
int b = int.Parse(num[1]);
return a + b;
}
}
public class Sub : ICalculate
{
public int Excute(string Expression)
{
string[] num = Expression.Split('-');
int a = int.Parse(num[0]);
int b = int.Parse(num[1]);
return a - b;
}
}
public class SimpleFactory
{
public static ICalculate getCaculate(string Expression)
{
if (Expression.Contains("+"))
return new Add();
else
return new Sub();
}
}
}
---------------------------------
using System;
using System.Collections.Generic;
using System.Text;
namespace reviewBase
{
class Class2//工厂
{
static void Main()
{
string expression1 = "2+3";
IFactory test1 = new Factory1();
ICalculate result1=test1.getCaculate();
Console.WriteLine(expression1 + "=" + result1.Excute(expression1));
string expression2="2-3";
IFactory test2 = new Factory2();
ICalculate result2 = test2.getCaculate();
Console.WriteLine(expression2 + "=" + result2.Excute(expression2));
Console.ReadLine();
}
}
public interface ICalculate
{
int Excute(string Expressions);
}
public class Add : ICalculate
{
public int Excute(string Expression)
{
string[] num = Expression.Split('+');
int a = int.Parse(num[0]);
int b = int.Parse(num[1]);
return a + b;
}
}
public class Sub : ICalculate
{
public int Excute(string Expression)
{
string[] num = Expression.Split('-');
int a = int.Parse(num[0]);
int b = int.Parse(num[1]);
return a - b;
}
}
public interface IFactory
{
ICalculate getCaculate();
}
public class Factory1:IFactory
{
public ICalculate getCaculate()
{
return new Add();
}
}
public class Factory2 : IFactory
{
public ICalculate getCaculate()
{
return new Sub();
}
}
}
---------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
namespace reviewBase
{
class Class4//抽象工厂
{
static void Main()
{
Farm fruit1, vagetabel1,fruit2,vagetabel2;
fruit1 = new AFarm();
vagetabel1 = new AFarm();
fruit1.factoryFruitFarm().PrintName();
vagetabel1.factoryVagFarm().PrintName();
fruit2 = new BFarm();
vagetabel2 = new BFarm();
fruit2.factoryFruitFarm().PrintName();
vagetabel2.factoryVagFarm().PrintName();
Console.ReadLine();
}
}
public abstract class Farm
{
public abstract FruitFarm factoryFruitFarm();
public abstract VagetabelFarm factoryVagFarm();
}
public class AFarm : Farm
{
public override FruitFarm factoryFruitFarm()
{
return new Apple();
}
public override VagetabelFarm factoryVagFarm()
{
return new BaiCai();
}
}
public class BFarm : Farm
{
public override FruitFarm factoryFruitFarm()
{
return new Banana();
}
public override VagetabelFarm factoryVagFarm()
{
return new QingCai();
}
}
public abstract class FruitFarm
{
public abstract void PrintName();
}
public class Apple : FruitFarm
{
public override void PrintName()
{
Console.WriteLine("apple");
}
}
public class Banana : FruitFarm
{
public override void PrintName()
{
Console.WriteLine("banana");
}
}
public abstract class VagetabelFarm
{
public abstract void PrintName();
}
public class BaiCai:VagetabelFarm
{
public override void PrintName()
{
Console.WriteLine("白菜");
}
}
public class QingCai : VagetabelFarm
{
public override void PrintName()
{
Console.WriteLine("青菜");
}
}
}
相关文章推荐
- 设计模式学习之简单工厂(simple facotry)、工厂方法(actory method)、抽象工厂(abstract factory)
- head first 设计模式学习之 简单工厂,工厂方法和抽象工厂
- 设计模式学习(二)之工厂模式(简单工厂+工厂方法+抽象工厂)
- 设计模式学习003——工厂模式(工厂方法、抽象工厂),简单工厂【也叫静态工厂】
- java 设计模式 学习笔记(1) - 简单工厂模式
- 设计模式--简单工厂、工厂方法、抽象工厂方法
- 设计模式学习笔记(一):简单工厂
- C#设计模式学习笔记---简单工厂模式
- JAVA设计模式学习之----创建模式:工厂模式(抽象工厂)
- 结合项目实例 回顾传统设计模式(四)工厂模式(简单工厂、普通工厂、抽象工厂)
- [转]C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 简单工厂模式(未完成)——小鸟学习设计模式笔记系列
- 设计模式学习-每日一记(1.简单工厂模式)
- 设计模式学习笔记一 简单工厂策略模式实现销售策略的变更(一)
- 设计模式学习笔记三:简单工厂(Simple Factory)
- .C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 设计模式学习笔记(二)--简单工厂模式
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- Java设计模式学习1—简单工厂模式