外观模式
1. 牛市股票还会亏钱
A: 投资者买股票,做不好的原因和软件开放当中有什么类似?而投资者买基金,基金经理人用这些钱去做投资,然后大家获利,这其实体现什么?
B: 由于众多投资者对众多股票的联系太多,反而不利于操作,这在软件中称为耦合度过高。而有了基金以后,用户只和基金打交道,关系基金的上涨和下跌就可以,实际是基金经理人和股票打交道。
2. 股民炒股票
class Program { 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(); } } //股票1 class Stock1 { //卖股票 public void Sell() { Console.WriteLine(" 股票1卖出"); } //买股票 public void Buy() { Console.WriteLine(" 股票1买入"); } } //股票2 class Stock2 { //卖股票 public void Sell() { Console.WriteLine(" 股票2卖出"); } //买股票 public void Buy() { Console.WriteLine(" 股票2买入"); } } //股票3 class Stock3 { //卖股票 public void Sell() { Console.WriteLine(" 股票3卖出"); } //买股票 public void Buy() { Console.WriteLine(" 股票3买入"); } } //国债1 class NationalDebt1 { //卖国债 public void Sell() { Console.WriteLine(" 国债1卖出"); } //买国债 public void Buy() { Console.WriteLine(" 国债1买入"); } } //房地产1 class Realty1 { //卖房地产 public void Sell() { Console.WriteLine(" 房产1卖出"); } //买房地产 public void Buy() { Console.WriteLine(" 房产1买入"); } }
3. 投资基金代码
class Program { static void Main(string[] args) { Fund jijin = new Fund(); jijin.BuyFund(); jijin.SellFund(); Console.Read(); } } 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 BuyFund() { gu1.Buy(); gu2.Buy(); gu3.Buy(); nd1.Buy(); rt1.Buy(); } public void SellFund() { gu1.Sell(); gu2.Sell(); gu3.Sell(); nd1.Sell(); rt1.Sell(); } } //股票1 class Stock1 { //卖股票 public void Sell() { Console.WriteLine(" 股票1卖出"); } //买股票 public void Buy() { Console.WriteLine(" 股票1买入"); } } //股票2 class Stock2 { //卖股票 public void Sell() { Console.WriteLine(" 股票2卖出"); } //买股票 public void Buy() { Console.WriteLine(" 股票2买入"); } } //股票3 class Stock3 { //卖股票 public void Sell() { Console.WriteLine(" 股票3卖出"); } //买股票 public void Buy() { Console.WriteLine(" 股票3买入"); } } //国债1 class NationalDebt1 { //卖国债 public void Sell() { Console.WriteLine(" 国债1卖出"); } //买国债 public void Buy() { Console.WriteLine(" 国债1买入"); } } //房地产1 class Realty1 { //卖房地产 public void Sell() { Console.WriteLine(" 房产1卖出"); } //买房地产 public void Buy() { Console.WriteLine(" 房产1买入"); } }
4. 外观模式
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一系统更加容易使用。
class Program { static void Main(string[] args) { Facade facade = new Facade(); facade.MethodA(); facade.MethodB(); Console.Read(); } } class SubSystemOne { public void MethodOne() { Console.WriteLine(" 子系统方法一"); } } class SubSystemTwo { public void MethodTwo() { Console.WriteLine(" 子系统方法二"); } } class SubSystemThree { public void MethodThree() { Console.WriteLine(" 子系统方法三"); } } class SubSystemFour { public void MethodFour() { Console.WriteLine(" 子系统方法四"); } } class Facade { SubSystemOne one; SubSystemTwo two; SubSystemThree three; SubSystemFour four; public Facade() { one = new SubSystemOne(); two = new SubSystemTwo(); three = new SubSystemThree(); four = new SubSystemFour(); } public void MethodA() { Console.WriteLine("\n方法组A() ---- "); one.MethodOne(); two.MethodTwo(); four.MethodFour(); } public void MethodB() { Console.WriteLine("\n方法组B() ---- "); two.MethodTwo(); three.MethodThree(); } }
5. 何时使用外观模式
- 首先:在设计初期阶段,应该要有意识的将不同的两个层分离,比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层,业务逻辑层和表示层的层与层之间建立外观模式,这样可以为复杂的子系统提供一个简单的接口,使得耦合性大大降低。
- 其次:在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,大多数的模式使用时也都会产生很多很小的类,这本是好事,但也给外部调用它们的用户程序带来了使用上的困难,增加外观模式可以提供一个简单的接口,减少它们的依赖。
- 第三:在维护一个遗留的大型系统时,肯能这个系统已经非常难以维护和扩展了,但因为它包含非常重要的功能,新的需求开放必须要依赖它。此时用外观模式也是非常适合的。你可以为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。
相关推荐
布衣 2020-01-29
banlanxiaoxue 2020-01-29
我心向佛善哉善哉 2020-01-28
mariayudandan 2020-01-06
lxjzx0 2019-12-30
huimor 2019-12-26
huimor 2019-12-21
myveer 2019-12-21
myveer 2019-12-21
epretyRD的天空 2019-12-21
myveer 2020-06-14
我心向佛善哉善哉 2020-06-12
banlanxiaoxue 2020-06-11
banlanxiaoxue 2020-06-09
huimor 2020-06-09
banlanxiaoxue 2020-05-26
myveer 2020-05-17
布衣 2020-05-16
布衣 2020-04-16
actuaryzx 2020-02-25