题目:股民买卖股票

实现:

         static void Main(string[] args)
{
Stock1 gu1 = new Stock1();
Stock2 gu2 = new Stock2();
Stock3 gu3 = new Stock3();
NationalDebt1 nd1 = new NationalDebt1();
Realty1 rt1 = new Realty1(); gu1.Buy();
gu2.Buy();
gu3.Buy();
nd1.Buy();
rt1.Buy(); gu1.Sell();
gu2.Sell();
gu3.Sell();
nd1.Sell();
rt1.Sell(); Console.Read();
} /// <summary>
/// 股票
/// </summary>
class Stock1
{
public void Sell()
{
Console.WriteLine("股票1卖出");
}
public void Buy()
{
Console.WriteLine("股票1买入");
}
} class Stock2
{
public void Sell()
{
Console.WriteLine("股票2卖出");
}
public void Buy()
{
Console.WriteLine("股票2买入");
}
} class Stock3
{
public void Sell()
{
Console.WriteLine("股票3卖出");
}
public void Buy()
{
Console.WriteLine("股票3买入");
}
} /// <summary>
/// 国债
/// </summary>
class NationalDebt1
{
public void Sell()
{
Console.WriteLine("国债1卖出");
}
public void Buy()
{
Console.WriteLine("国债1买入");
}
} /// <summary>
/// 房地产
/// </summary>
class Realty1
{
public void Sell()
{
Console.WriteLine("房产1卖出");
} //买房地产
public void Buy()
{
Console.WriteLine("房产1买入");
}
}

题目延伸1:对于股民而言,自己需要去了解不同的股票、公司、政策、发展等等各种情况,所以特别难以了解到股票的潜质,这个时候就出现了专业的经理人,他们可以帮助实现投资,用户就完全不需要了解关于股票的各种细节,只需要投资和撤资就好了。

实现:

         static void Main(string[] args)
{
//此时用户不需要了解股票,甚至可以对股票一无所知
//参与股票的具体买卖都由基金公司独立完成
//这样客户端的代码就非常简洁明了
Fund jijin = new Fund();
jijin.Buy();
jijin.Sell(); Console.Read();
} /// <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 Buy()
{
gu1.Buy();
gu2.Buy();
gu3.Buy();
nd1.Buy();
rt1.Buy();
} public void Sell()
{
gu1.Sell();
gu2.Sell();
gu3.Sell();
nd1.Sell();
rt1.Sell();
}
} class Stock1
{
public void Buy()
{
Console.WriteLine("buy stock1");
} public void Sell()
{
Console.WriteLine("sell stock1");
}
} class Stock2
{
public void Buy()
{
Console.WriteLine("buy stock2");
} public void Sell()
{
Console.WriteLine("sell stock2");
}
} class Stock3
{
public void Buy()
{
Console.WriteLine("buy stock3");
} public void Sell()
{
Console.WriteLine("sell stock3");
}
} class NationalDebt1
{
public void Buy()
{
Console.WriteLine("buy nationaldebt1");
} public void Sell()
{
Console.WriteLine("sell nationaldebt1");
}
} class Realty1
{
public void Buy()
{
Console.WriteLine("buy realty1");
} public void Sell()
{
Console.WriteLine("sell realty1");
}
}

解析:

这里也就是所说的外观模式。

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

注:文中所有代码及知识点均来自于《大话设计模式》,本人属于边学边看边敲代码边总结的阶段。

C#学习笔记-外观模式的更多相关文章

  1. javascript设计模式(张容铭)学习笔记 - 外观模式绑定事件

    有一个需求要为document对象绑定click事件来是想隐藏提示框的交互功能,于是小白写了如下代码: document.onclick = function(e) { e.preventDefaul ...

  2. 《Head first设计模式》学习笔记 – 迭代器模式

    <Head first设计模式>学习笔记 – 迭代器模式 代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 爆炸性新闻:对象村餐厅和对象村煎饼屋合并了!真是个 ...

  3. Java设计模式学习记录-外观模式

    前言 这次要介绍的是外观模式(也称为门面模式),外观模式也属于结构型模式,其实外观模式还是非常好理解的,简单的来讲就是将多个复杂的业务封装成一个方法,在调用此方法时可以不必关系具体执行了哪些业务,而只 ...

  4. 设计模式学习之外观模式(Facade,结构型模式)(8)

    1.什么是外观模式为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 2.为什么要使用外观模式在软件开发系统中,客户程序经常会与复杂系统的内 ...

  5. 设计模式学习心得<外观模式 Facade>

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性. 这种模式涉及 ...

  6. 设计模式 笔记 外观模式 Facade

    //---------------------------15/04/16---------------------------- //Facade 外观模式-----对象结构型模式 /* 1:意图: ...

  7. 设计模式之笔记--外观模式(Facade)

    外观模式(Facade) 定义 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 类图 描述 Facade:外观类,外观 ...

  8. 《Head First 设计模式》学习笔记——代理模式

    设计模式 代理模式:为还有一个对象提供一个替身或占位符以控制对这个对象的訪问. 使用代理模式创建代表对象,让代表对象控制某对象的訪问,被代理的对象能够使远程的对象(远程代理).创建开销大的对象(虚拟代 ...

  9. 《Head First 设计模式》学习笔记——迭代模式 + 组合模式

    迭代模式设置共生死亡,一般来说.我们只是想实现一个集,我们需要的同时提供这个集合的迭代器,喜欢java中间Collection.List.Set.Map等,这些集合都有自己的迭代器.假如我们要实现一个 ...

随机推荐

  1. 浅谈HashMap原理,记录entrySet中的一些疑问

    HashMap的底层的一些变量: transient Node<K,V>[] table; //存储数据的Node数组 transient Set<java.util.Map.Ent ...

  2. 链式二叉树的实现(Java)

    定义树节点: package 链式二叉树; public class TreeNode { private Object data; private TreeNode left; private Tr ...

  3. 架构师养成记--32.Redis高级(安全 主从复制)

    Redis高级命令及特性 keys * 返回满足的所有键值(*表示模糊匹配) exists 是否存在指定的key(返回1表示存在,0表示不存在) expire 设置某个key的过期时间,使用ttl查看 ...

  4. Java多线程——同步容器类

    1.同步容器类 同步容器类包括Vector和Hashtable,是早期JDK的一部分,这些类实现的方法是:将它们的状态封装起来,并对每个共有的方法进行同步,使得每个线程只有一个线程能访问它们. 1.1 ...

  5. Carte作为Windows服务

    有一些用例将Carte作为Windows服务运行: 当使用命令窗口运行Carte实例时,任何人都会错误地关闭实例并且Carte将关闭. Carte.bat命令窗口与调用批处理文件的用户会话相关联,需要 ...

  6. java 面试大全

    一.CoreJava 部分: 基础及语法部分: 1.面向对象的特征有哪些方面? [基础] 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地 ...

  7. 通过源码看原理之 selenium

    # selenium的历史1. selenium1.x:这个时候的selenium,使用的是JavaScript注入技术与浏览器打交道,需要Selenium RC启动一个Server,将操作Web元素 ...

  8. 【笔记】AJAX+SweetAlert插件实现删除操作

    [笔记]AJAX+SweetAlert插件实现删除操作 Django AJAX SweetAlert  展示 SweetAlert 插件介绍 SweetAlert 是一个 JS 插件,能够完美替代 J ...

  9. PS2模拟器 PCSX2 新手向

    1.模拟器的下载 1.1百度网盘地址:http://pan.baidu.com/s/1i3kt7bJ (已经整合了PS2BIOS的模拟器下载,比较新的版本,适合新手) 1.2高端玩家可以下载: 官网g ...

  10. 认识CSS中精灵技术(sprite)和滑动门

    前端之HTML,CSS(十) 精灵技术与精灵图 精灵技术本质 精灵技术是一种处理网页背景图像的方式,实质是将小的背景图片拼接到一张大的背景图像上.拼接成的大图被称为精灵图.浏览器打开网页时,每一个图片 ...