当前位置:首页 > C#编程 > C#/.net框架 > 正文内容

C# 外观模式(Facade)举一个例子

Jorge2年前 (2022-05-09)C#/.net框架706

 

有关外观模式见下面贴子,下面编写的一个例子。


image.png

FundClass.cs

C#
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace facadeTest1{

    
    public class StockClass
    {
        private string _StockName;
        public string StockName        {
            get { return _StockName; }
            set { _StockName = value; }
        }

        public StockClass(string stockname)
        {
            _StockName = stockname;
        }

        public string buy()
        {
            return string.Format("买入股票: [{0}] !", _StockName);
        }

        public string sell()
        {
            return string.Format("股票:[{0}] 卖出了!", _StockName);
        }
    }

    public class NationalDebtClass
    {
        private string _NationalDebtName;
        public string NationalDebtName        {
            get { return _NationalDebtName; }
            set { _NationalDebtName = value; }
        }

        public NationalDebtClass(string nationaldebtName)
        {
            _NationalDebtName = nationaldebtName;
        }

        public string buy()
        {
            return string.Format("买入国债: [{0}] !", _NationalDebtName);
        }

        public string sell()
        {
            return string.Format("国债: [{0}] 卖出了!", _NationalDebtName);
        }
    }

    public class RealtyClass
    {
        private string _RealtyName;
        public string RealtyName        {
            get { return _RealtyName; }
            set { _RealtyName = value; }
        }

        public RealtyClass(string realtryname)
        {
            _RealtyName = realtryname;
        }

        public string buy()
        {
            return string.Format("买入房地产: [{0}] !", _RealtyName);
        }

        public string sell()
        {
            return string.Format("产地产: [{0}] 卖出了!", _RealtyName);
        }
    }


    class FundClass
    {
        public ChangeUI onChange = null;

        public string msgInfo;
        StockClass stock1;
        StockClass stock2;
        NationalDebtClass nationalDebt1;
        RealtyClass realty1;

        public FundClass()
        {
            stock1 = new StockClass("新旺达新能源科技有限公司");
            stock2=new StockClass("爱康电子科技有限公司");
            nationalDebt1=new NationalDebtClass("中国人民银行国债");
            realty1=new RealtyClass("武汉房地产");
        }

        public void buy()
        {
            msgInfo = string.Format(
                stock1.buy()+Environment.NewLine+
                stock2.buy()+Environment.NewLine+
                nationalDebt1.buy()+Environment.NewLine+
                realty1.buy()+Environment.NewLine                );
            if (onChange != null)
                onChange();
        }

        public void sell()
        {
            msgInfo = string.Format(
               stock1.sell() + Environment.NewLine +
               stock2.sell() + Environment.NewLine +
               nationalDebt1.sell() + Environment.NewLine +
               realty1.sell() + Environment.NewLine               );
            if (onChange != null)
                onChange();
        }


    }}

Delegate.cs

C#
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace facadeTest1{
    public delegate void ChangeUI();}

MVcontrol.cs

C#
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;namespace facadeTest1{
    class MVcontrol
    {
        private FundClass _fclass1;
        public MVcontrol(FundClass paramFundClass)
        {
            _fclass1 = paramFundClass;
        }

        public void UpdateUI(RichTextBox richControl)
        {
            richControl.Text = _fclass1.msgInfo;
        }
    }}

image.png

C#
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace facadeTest1{
    public partial class MainForm : Form    {
        FundClass fund;
        MVcontrol mvc;
        public MainForm()
        {
            InitializeComponent();
            fund = new FundClass();
            fund.onChange = onChange;
            mvc = new MVcontrol(fund);

            btnBuy.Click += new EventHandler(btnBuy_Click);
            btnSell.Click += new EventHandler(btnSell_Click);
        }

        void btnSell_Click(object sender, EventArgs e)
        {
            fund.sell();
        }

        void btnBuy_Click(object sender, EventArgs e)
        {
            fund.buy();
        }

        public void onChange()
        {
            mvc.UpdateUI(this.richTextBox1);
        }

        private void btnSell_Click_1(object sender, EventArgs e)
        {

        }
    }}




#转载请注明出处 www.skcircle.com 《少有人走的路》勇哥的工业自动化技术网站。

扫描二维码推送至手机访问。

版权声明:本文由7点博客发布,如需转载请注明出处。

本文链接:http://6dot.cn/?id=66

标签: .NET框架.NET
分享给朋友:

“C# 外观模式(Facade)举一个例子” 的相关文章

C# 控件闪烁问题的解决

C# 控件闪烁问题的解决

说一下解决C#下控件闪烁的几个问题,如下:  listview和datagridview显示数据闪烁 自定义控件的显示闪烁listbox滚动条拖动闪烁面板中控件过多的闪烁propertyGrid点击和修改项目缓慢的问题richtextbox控件的刷新显示问题此类问题对于界面复杂规...

C#的propertygrid控件,选择和修改项目时很慢

C#的propertygrid控件,选择和修改项目时很慢

C#的propertygrid控件是很强。可以实现类似Vitual Studio属性面板那样的效果。但是。。。。我们一直痛苦它在选择和修改项目的时候很慢。我的用法是使用控件的SelectObject来绑定数据。C# PgridMotionSpeed.SelectedObject ...

C# 当前不会命中断点 还没有为该文档加载任何符号

C# 当前不会命中断点 还没有为该文档加载任何符号

这个问题网上的经验大概如下:1。 清空方案,重新编译2。 删除项目bin目录下的东西,重新编译3。 解决相互引用的问题。4。 确保不是run的release5。把项目编译改为x866。 好像没发现其它的了。。。这些解决不了我们手上的项目的问题。我们的工程有几十个项目。我长话短说,解决方法是:引导项目...

关于C#项目引用的一点经验

关于C#项目引用的一点经验

关于项目引用,有几种:(一)这种是引用系统的程序集(二)下面这种是引用你自己的项目“解决方案”(三)最后一种是浏览本机上的项目的dll。对于工程中有几十个项目的软件来说,虽然使用(二)是很方便。但是会编译速度奇慢,而且随着项目越多越慢。貌似他run之前都会把所有项目都试图更新一下。勇哥宿舍的电脑,实...

C# 异步和等待,async/await

C# 异步和等待,async/await

 首先,重点是:异步将从根本上改变大多数代码的编写方式。是的,我相信 async/await 会比 LINQ 产生更大的影响。理解异步将在短短几年内成为基本必需品。关键字介绍让我们直接开始吧。我将使用一些稍后将阐述的概念——请继续阅读第一部分。异步方法看起来像这样:public ...

.NET(C#) TPL:Task中未觉察异常和TaskScheduler.UnobservedTaskException事件

.NET(C#) TPL:Task中未觉察异常和TaskScheduler.UnobservedTaskException事件

当你在一个Task执行中抛出异常,比如:C#Task.Factory.StartNew(() =>{    throw new Exception();});运行该方法,没有任何异常抛出。事实上此时Task的异常处于未觉察状...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。