简单的设计模式
设计模式 简单
2023-09-11 14:21:22 时间
这个是《大话设计模式》中的一些简单例子,
简单易懂,所以整理下来,方便大家查看。其实我们大多只要熟悉几种设计模式就好了。
public static void Main(string[] args)
{
//Test简单工厂();
//Test策略模式();
//Test装饰模式();
//Test代理模式();
//Test工厂方法();
Console.Read();
}
#region 模式-简单工厂
public abstract class Operation
{
public double NumA { get; set; }
public double NumB { get; set; }
public abstract double GetResult();
}
public class Add : Operation
{
public override double GetResult()
{
return NumA + NumB;
}
}
public class Mul : Operation
{
public override double GetResult()
{
return NumA - NumB;
}
}
public class OperationFactory
{
public static Operation CreateOperation(string operation)
{
Operation o = null;
switch (operation)
{
case "+": o = new Add(); break;
case "-": o = new Mul(); break;
}
return o;
}
}
public static void Test简单工厂()
{
Operation o = OperationFactory.CreateOperation("+");
o.NumA = double.Parse(Console.ReadLine());
o.NumB = double.Parse(Console.ReadLine());
double result = o.GetResult();
Console.WriteLine(result);
}
#endregion
#region 模式-策略模式
//抽象算法
public abstract class Strategy
{
//算法方法
public abstract void AlgorithmInterface();
}
public class ConcreteStrategyA : Strategy
{
public override void AlgorithmInterface()
{
Console.WriteLine("A");
}
}
public class ConcreteStrategyB : Strategy
{
public override void AlgorithmInterface()
{
Console.WriteLine("B");
}
}
public class ConcreteStrategyC : Strategy
{
public override void AlgorithmInterface()
{
Console.WriteLine("C");
}
}
public class Context
{
Strategy strategy = null;
public Context(Strategy strategy)
{
this.strategy=strategy;
}
public void ConcreteStrategy()
{
strategy.AlgorithmInterface();
}
}
public static void Test策略模式()
{
Context c = new Context(new ConcreteStrategyA());
c.ConcreteStrategy();
c = new Context(new ConcreteStrategyC());
c.ConcreteStrategy();
}
#endregion
#region 模式-装饰模式
abstract class Component
{
public abstract void Operation();
}
class ConcreteComponent : Component
{
public override void Operation()
{
Console.WriteLine("具体对象的操作");
}
}
abstract class Decorator : Component
{
protected Component component;
public void SetComponent(Component component)
{
this.component = component;
}
public override void Operation()
{
if (component != null)
{
component.Operation();
}
}
}
class ConcreteDecoratorA : Decorator
{
private string addedState;
public override void Operation()
{
base.Operation();
addedState = "New State";
Console.WriteLine("具体装饰对象A的操作");
}
}
class ConcreteDecoratorB : Decorator
{
public override void Operation()
{
base.Operation();
AddBehavior();
Console.WriteLine("具体装饰对象B的操作");
}
public void AddBehavior()
{
}
}
public static void Test装饰模式()
{
ConcreteComponent c = new ConcreteComponent();
ConcreteDecoratorA d1 = new ConcreteDecoratorA();
ConcreteDecoratorB d2 = new ConcreteDecoratorB();
d1.SetComponent(c);
d2.SetComponent(d1);
d2.Operation();
}
#endregion
#region 模式-代理模式
abstract class Subject
{
public abstract void Request();
}
class RealSubject : Subject
{
public override void Request()
{
Console.WriteLine("真实请求");
}
}
class Proxy : Subject
{
RealSubject realSubject;
public override void Request()
{
if (realSubject == null)
realSubject = new RealSubject();
realSubject.Request();
}
}
public static void Test代理模式()
{
Proxy proxy = new Proxy();
proxy.Request();
Console.ReadLine();
}
#endregion
#region 模式-工厂方法
//沿用简单工厂抽象类
interface IFactory
{
Operation CreateOperation();
}
class AddFactory : IFactory
{
public Operation CreateOperation()
{
return new Add();
}
}
class MulFactory : IFactory
{
public Operation CreateOperation()
{
return new Mul();
}
}
public static void Test工厂方法()
{
IFactory operFactory = new AddFactory();
Operation oper = operFactory.CreateOperation();
oper.NumA = 1;
oper.NumB = 2;
double result = oper.GetResult();
Console.WriteLine(result);
}
#endregion
#region 模式-原型模式
#endregion
相关文章
- 大话设计模式-策略模式与简单工厂模式
- 设计模式-抽象工厂模式
- 设计模式复习-简单工厂模式
- 设计模式(五)简单工厂模式+工厂方法模式
- 前端的设计模式 -- 单例模式
- 设计模式java——简单工厂模式
- 设计模式之六大原则(转载)
- 设计模式--行为型模式--观察者模式(Observer模式)
- Command模式(命令设计模式)
- 《Android 源码设计模式解析与实战》——第2章,第2.5节单例模式的简单示例
- Java 设计模式:代理、适配器、桥接、装饰、外观、享元、组合模式
- Java设计模式之结构型:组合模式
- 设计模式(四)简单工厂模式
- 设计模式之美:Type Object(类型对象)
- 设计模式之美:Visitor(访问者)
- 多态与设计模式之我的理解
- 跟屌丝大哥学习设计模式---代理模式
- C++设计模式实现--职责链(Chain of Responsibility)模式
- 陈梓涵:我们为什么要学习设计模式
- 设计模式(四):SIMPLE FACTORY简单工厂模式 -- 创建型模式
- 【设计模式】简单工厂、工厂方法与抽象工厂的区别
- 【设计模式】行为型模式-第 3 章第 4 讲【迭代器模式】