牛市股票还会亏钱?——外观模式。

外观模式以及动机

外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
动机:组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过度的耦合面临很多变化的变化的挑战

问题的引入:病人与医院

如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等,看病的病人要与这些部门打交道,就如同一个子系统客户端与另一个子系统的各个类打交道一样,不是一件容易的事。
可以设置一个接待员的位置,由接待员负责代为挂号、门诊、划价、化验、收费、取药等,这个接待员就是门面模式的体现。

问题的引入:投资者买股票vs基金

由于众多投资者对众多股票的联系太多,反而不利于操作,这在软件中称为耦合性过高,而有了基金以后,变成众多用户只和基金打交道,关心基金的上涨和下跌就可以了,实际上的操作却是,基金经理人在与上千只股票和其他资投资产品打交道。

股民炒股代码

具体股票、国债、房地产类

public class Stock1_1 {
	public void Sell() {
		System.out.println("股票1卖出");
	}

	public void Buy() {
		System.out.println("股票1 买入");
	}
}
//Stock2、Stock3、NationalDebt1(国债)、Realty1(房地产)类代码类似

客户端代码

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
//一
		Stock1_1 gu1=new Stock1_1();
		Stock2_1 gu2=new Stock2_1();
		Stock3_1 gu3=new Stock3_1();
		NationalDebt1_1 nd1=new NationalDebt1_1();
		Realty1_1 rt1=new Realty1_1();
		
		gu1.Buy();
		gu2.Buy();
		gu3.Buy();
		nd1.Buy();
		rt1.Buy();
		
		gu1.Sell();
		//以下类似
	}

}

投资基金代码

代码结构图
在这里插入图片描述
基金类(加入到股民炒股中)

public class Fund_2 {
	Stock1_1 gu1;
	Stock2_1 gu2;
	Stock3_1 gu3;
	NationalDebt1_1 nd1;
	Realty1_1 rt1;

	public Fund_2() {
		this.gu1 = new Stock1_1();
		this.gu2 = new Stock2_1();
		this.gu3 = new Stock3_1();
		this.nd1 = new NationalDebt1_1();
		this.rt1 = new Realty1_1();
	}

	public void BuyFund() {
		gu1.Buy();
		gu2.Buy();
		// 以下类似

	}

	public void SellFund() {
		gu1.Sell();
		gu2.Sell();
		// 以下类似
	}
}

客户端

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根

		//二
		Fund_2 jijin=new Fund_2();
		
		//基金购买
		jijin.BuyFund();
		//基金赎回
		jijin.SellFund();
	}

}

何时使用外观模式

三阶段:
首先,在设计初期阶段,应该要有意识的,将不同的两个层分离
其次,在开发阶段,子系统往往因为不断地重构演化而变得越来越复杂,增加外观Facade可以提供一个简单的接口,减少他们这样的一个阶段。
第三,在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,,可以为新系统开发一个外观Facade类来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值