首页 > 编程语言 >C#外观模式

C#外观模式

时间:2023-03-04 23:23:37浏览次数:33  
标签:Sell 外观 Buy Console C# void 模式 WriteLine public

定义:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

应用场景:

1、在设计初期阶段,应该要有意识的将不同的两个层分离。

2.在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂。

3.在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了。但因为它包含非常重要的功能,新的需求开发必须要依赖于它,此时用外观模式Facade也是非常合适的。

为新系统开发一个外观Facade类,来提供设计粗糙或高度复制的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。

示例代码(已基金购买赎回为例):

/// <summary>
/// 基金
/// </summary>
class Fund
{
Stock1 gu1;
Stock2 gu2;
Stock3 gu3;
NationalDebt1 nd1;
Realty1 rt1;

public Fund()
{
gu1 = new Stock1();
gu2 = new Stock2();
gu3 = new Stock3();
nd1 = new NationalDebt1();
rt1 = new Realty1();
}

public void BuyFundl()
{
gu1.Buy();
gu2.Buy();
gu3.Buy();
nd1.Buy();
rt1.Buy();
}

public void SellFundBuy()
{
gu1.Sell();
gu2.Sell();
gu3.Sell();
nd1.Sell();
rt1.Sell();
}
}

/// <summary>
/// 国债1
/// </summary>
class NationalDebt1
{
public void Sell()
{
Console.WriteLine("国债1卖出");
}

public void Buy()
{
Console.WriteLine("国债1买入");
}
}

/// <summary>
/// 房地产1
/// </summary>
class Realty1
{
public void Sell()
{
Console.WriteLine("房地产1卖出");
}

public void Buy()
{
Console.WriteLine("房地产1买入");
}
}

/// <summary>
/// 股票1
/// </summary>
class Stock1
{
public void Sell()
{
Console.WriteLine("股票1卖出");
}

public void Buy()
{
Console.WriteLine("股票1买入");
}
}

/// <summary>
/// 股票2
/// </summary>
class Stock2
{
public void Sell()
{
Console.WriteLine("股票2卖出");
}

public void Buy()
{
Console.WriteLine("股票2买入");
}
}

/// <summary>
/// 股票3
/// </summary>
class Stock3
{
public void Sell()
{
Console.WriteLine("股票3卖出");
}

public void Buy()
{
Console.WriteLine("股票3买入");
}
}

 

static void Main(string[] args)
{
Fund jijin = new Fund();
//基金购买
jijin.BuyFundl();
//基金赎回
jijin.SellFundBuy();
Console.Read();
}

标签:Sell,外观,Buy,Console,C#,void,模式,WriteLine,public
From: https://www.cnblogs.com/KevinSteven/p/17179463.html

相关文章

  • ABC292解题报告
    比赛传送门E.Transitivity题意:有一张有向图,你需要在其中添加若干条边,满足对于任意\(a\tob,b\toc\),都有\(a\toc\)。求最少的添加边数。\(n,m\le2000\)。首先可......
  • Django源码-startproject
    Django源码-startprojectDjango的所有命令都位于django/django/core/management/commands/目录下一命令目录django-adminstartprojectproject_name这个命令在源码里......
  • C++ 中的 bitset
    C++中的\(\textsf{bitset}\)是能够存储\(01\)的容器,这一点看似与布尔(bool)数组很像。而一个布尔类型将会占用\(1\)字节的空间,相对于\(\textsf{bitset}\)来讲\(1\)......
  • 题解 CF1406D【Three Sequences】
    看错题了,我很生气。problemYouaregivenasequenceof$n$integers$a_1,a_2,\ldots,a_n$.Youhavetoconstructtwosequencesofintegers$b$and$c......
  • 批量导入VCF文件
    Outlook系列软件在导入vCard(*.vcf)格式的联系人时一次只能导入成功一个,但我们可以通过VBA脚本让这个任务自动化.操作步骤如下:1,把所有vCards文件放在一个文件夹内。例如C:\V......
  • Chrome浏览器的跨域设置
    做前后端分离的开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,而且chrome浏览器支持可跨域的设置,但是新版本的chrome浏览器提高了跨域设置的门槛,原来的方法......
  • Paper Reading: Plan Stitch: Harnessing the Best of Many Plans
    Title“PlanStitch:HarnessingtheBestofManyPlans”(Ding等,2018,p.1123)【计划缝合:利用众多计划的精华/最优两个关键点:缝合精华/最优对本科毕设的最......
  • 使用ELRepo升级CentOS内核
    在腾讯云中部署了一些服务器,操作系统使用的是CentOS7.6,但是其默认内核版本较低,现使用ELRepo对CentOS的内核进行升级。操作环境服务器:腾讯云轻量应用服务器操作系统:Cent......
  • C# 迪米特法则
    迪米特法则也叫最少知识原则定义;如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者......
  • Paper Reading: Robustness metrics for relational query execution plans
    笔记本篇文章的两个核心内容:“threenovelmetricsfortherobustnes”(FlorianWolf等,2018,p.1360):三个健壮性指标(关于基数估计误差),用于衡量qep的健壮性。适用性......