大话设计模式之外观模式(Java版实现) 买股票还是买基金在此揭晓

随着物价上涨,我们发觉我们的钱越来越不值钱,如是很多人想到钱生钱的方式,如炒股票,炒基金,炒楼,买国债等等,作为程序员的我们,就用代码来实现,进而深入分析一下究竟买哪个最好,别急,慢慢来。

第一步:创建三个股票类,一个国债类,一个房地产类,他们都有买入和卖出的行为。

//股票1
public class Stock1 {
	
	public void sell() {
		System.out.println("股票1卖出");
	}
	
	public void buy() {
		System.out.println("股票1买入");
	}
}
//股票2
public class Stock2 {
	
	public void sell() {
		System.out.println("股票2卖出");
	}
	
	public void buy() {
		System.out.println("股票2买入");
	}
}
//股票3
public class Stock3 {
	
	public void sell() {
		System.out.println("股票3卖出");
	}
	
	public void buy() {
		System.out.println("股票3买入");
	}
}

//国债1
public class NationalDebt1 {
	
	public void sell() {
		System.out.println("国债1卖出");
	}
	
	public void buy() {
		System.out.println("国债1买入");
	}
}
//房地产1
public class Realty1 {
	
	public void sell() {
		System.out.println("房地产1卖出");
	}
	
	public void buy() {
		System.out.println("房地产1买入");
	}
}
第二步:接下来就是测试一下,例如作为客户的我们把这些都买入,在恰当的时机卖出。

//测试类
public class Test1 {
	
	public static void main(String[] args) {
		Stock1 s1 = new Stock1();
		Stock2 s2 = new Stock2();
		Stock3 s3 = new Stock3();
		NationalDebt1 nd1 = new NationalDebt1();
		Realty1 r1 = new Realty1();
		
		//客户与股票、国债、房地产联系太紧密,耦合度比较高
		s1.buy();
		s2.buy();
		s3.buy();
		nd1.buy();
		r1.buy();
		
		s1.sell();
		s2.sell();
		s3.sell();
		nd1.sell();
		r1.sell();
	}
}
第三步:我们从客户端代码就可以知道我们与股票,国债或者房地产的耦合度太高,作为不是专业的炒股人员我们来说,恰当的卖出和买入这些股票是有难度的,一不小心就会亏损,所以不要轻易相信别人说的话,炒股很容易,这些话都是骗人的,风险很大,玩的都是心跳,但是对于专业的人士来说就不一样了,因为他们是行内人,会分析股票的形式进而作出准确的判断,但是我们呢,难度就不能吗?回答是,我们肯定可以,但是我们要换一种方式,我们可以购买基金,基金是比较赚钱的,也较稳定,我们买基金的钱,其实是被专业人士拿去投资或者炒股其他的,反正他们可以帮我们赚钱,但是也有缺点,就是我们要给一定的钱给别人,有优点是稳定,心脏一般不会受到太大打击,但是建议也要买一个好的基金。代码实现如下:
//基金类,对股票,国债,房地产的买入和卖出做统一的管理
public class Fund {

	private Stock1 s1;
	private Stock2 s2;
	private Stock3 s3;
	private NationalDebt1 nd1;
	private Realty1 r1;
	
	public Fund() {
		s1 = new Stock1();
		s2 = new Stock2();
		s3 = new Stock3();
		nd1 = new NationalDebt1();
		r1 = new Realty1();
	}
	
	//卖出
	public void sell() {
		s1.sell();
		s2.sell();
		s3.sell();
		nd1.sell();
		r1.sell();
	}
	
	//买入
	public void buy() {
		s1.buy();
		s2.buy();
		s3.buy();
		nd1.buy();
		r1.buy();
	}
}
第四步:我们通过基金来与股票或者其他的投资联系,我们不直接与股票或者其他投资联系,所以我们要关注的东西就少很多了,就关注基金的情况就行了,不用关心各种各样的股票。测试类如下:
//测试类
public class Test2 {
	
	public static void main(String[] args) {
		//通过基金与股票,国债,房地产进行联系,降低耦合度
		//高层逻辑不依赖与底层,应该依赖于抽象,依赖倒置原则
		Fund fund = new Fund();
		
		//买入
		fund.buy();
		
		//卖出
		fund.sell();
	}
}
第五步: 总结, 外观模式

定义:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
 
使用场景:1.在设计初期阶段,应该要有意思的将不同的两个层分离,类似MVC框架,层与层之间建立外观Facade,这样可以降低耦合度,都依赖于接口。2.在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加一个外观可以提供一个接口,减少它们之间的依赖。3.在维护一个遗留的大型系统时,可能这个系统已经非常难于维护和扩展了,但因为它包含非常重要的功能,新的开发需求必须依赖于它,此时,可以使用外观模式,为新的系统开发一个外观类,来提供设计粗糙或高度复杂的遗留代码比较清晰简单的接口,让新的系统与外观类对象交互,外观类与遗留代码交互所有复杂的工作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值