大话设计模式之外观模式总结-java实现

注:示例来自《大话设计模式》

现有股民炒股票的代码如下

股票1类

package Test11;

//股票1
public class Stock1 {

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

    //买股票
    public void Buy()
    {
        System.out.println(" 股票1买入");
    }

}

股票2类

package Test11;

//股票2
public class Stock2 {

    //卖股票
    public void Sell()
    {
        System.out.println(" 股票2卖出");
    }

    //买股票
    public void Buy()
    {
        System.out.println(" 股票2买入");
    }

}

股票3类

package Test11;

//股票3
public class Stock3 {

    //卖股票
    public void Sell()
    {
        System.out.println(" 股票3卖出");
    }

    //买股票
    public void Buy()
    {
        System.out.println(" 股票3买入");
    }

}

国债1类

package Test11;

//国债1
public class NationalDebt1 {

    //卖国债
    public void Sell()
    {
        System.out.println(" 国债1卖出");
    }

    //买国债
    public void Buy()
    {
        System.out.println(" 国债1买入");
    }

}

房地产1类

package Test11;

//房地产1
public class Realty1 {

    //卖房地产
    public void Sell()
    {
        System.out.println(" 房产1卖出");
    }

    //买房地产
    public void Buy()
    {
        System.out.println(" 房产1买入");
    }

}

客户端代码

package Test11;

public class Program {

    public 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();

    }

}

上面的写法 用户需要了解股票 国债 房产情况 需要参与这些项目的具体买和卖 耦合性很高

下面我们增加一个基金类 它需要了解所有的股票或其他投资方式的方法或属性 进行组合 以备外界调用 代码如下

基金类

package Test11;

public 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();
    }

}

客户端代码

package Test11;

public class Program {

    public static void main(String[] args) {

        Fund jijin = new Fund();

        jijin.BuyFund();
        jijin.SellFund();

    }

}

此时用户不需要了解股票 甚至可以对股票一无所知 买了基金就回家睡觉 一段时间后再赎回就可以大把数钱 参与股票的具体买卖都由基金公司完成 客户端代码非常简捷明了 这样的写法 基本就是外观模式的基本代码结构了

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值