外观模式-Facade
来源:互联网 发布:换头型软件 编辑:程序博客网 时间:2024/06/10 07:07
- 前言
- UML
- 题目
- 源码下载地址
- 代码
- 基础的类
- 外观类
- 客户端测试
- 运行结果
前言
Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.
要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,使得子系统更易为使用。
UML
题目
请使用外观模式(Facade)模拟基金公司代买股票(Stock)、国债(NationalDebt)、房地产(Realty)的实例股票有两种,分别为高风险高收益股票和低风险低收益股票;股票、基金、国债都有2个方法:买入(buy)和卖出(sell)买入和卖出都用输出语句表示即可。(比如房地产的buy函数就输出:房地产买入;房地产的sell函数就输出:房地产卖出)基金公司为用户定制两种金融方案,分别是:一、高风险方案:包含高风险买入(BuyHighRiskFund)和高风险卖出(SellHighRiskFund)两方法调用的是高风险高收益股票和房地产对应的买,卖函数。一、低风险方案:包含低风险买入(BuyLowRiskFund)和低风险卖出(SellLowRiskFund)两方法。调用的是低风险低收益股票和国债对应的买,卖函数。
源码下载地址
GitHub:https://github.com/YEN-GitHub/PatternDemo/tree/master/src/StructuralPattern/FacadePattern
代码
基础的类
package StructuralPattern.FacadePattern.demo1;/** * Created by yangenneng on 2017-05-17 10:43 * Abstract:股票接口 */public interface Stock { public void buy() ; public void sell() ;}
package StructuralPattern.FacadePattern.demo1;/** * Created by yangenneng on 2017-05-17 10:46 * Abstract:高风险股票 */public class HighStock implements Stock{ @Override public void buy() { System.out.println("购买高风险股票"); } @Override public void sell() { System.out.println("卖出高风险股票"); }}
package StructuralPattern.FacadePattern.demo1;/** * Created by yangenneng on 2017-05-17 10:46 * Abstract:高风险股票 */public class LowStock implements Stock{ @Override public void buy() { System.out.println("购买低风险股票"); } @Override public void sell() { System.out.println("卖出低风险股票"); }}
package StructuralPattern.FacadePattern.demo1;/** * Created by yangenneng on 2017-05-17 10:48 * Abstract:国债 */public class NationalDebt { public void buy() { System.out.println("购买国债"); } public void sell() { System.out.println("卖出国债"); }}
package StructuralPattern.FacadePattern.demo1;/** * Created by yangenneng on 2017-05-17 10:49 * Abstract:房地产 */public class Realty { public void buy() { System.out.println("购买房地产"); } public void sell() { System.out.println("卖出房地产"); }}
外观类
package StructuralPattern.FacadePattern.demo1;/** * Created by yangenneng on 2017-05-17 10:59 * Abstract:方案接口 */public interface Scheme { public void buyFund(); //购买股票 public void sellFund(); //卖出股票}
package StructuralPattern.FacadePattern.demo1;import java.awt.image.ImageConsumer;/** * Created by yangenneng on 2017-05-17 10:53 * Abstract:高风险方案 */public class HighRiskFund implements Scheme { protected Stock stock=new HighStock(); //高风险股票 private Realty realty=new Realty(); //房地产 @Override public void buyFund() { System.out.println("---------------购买高风险方案---------------"); stock.buy(); realty.buy(); } @Override public void sellFund() { System.out.println("---------------卖出高风险方案---------------"); stock.sell(); realty.sell(); }}
package StructuralPattern.FacadePattern.demo1;/** * Created by yangenneng on 2017-05-17 10:57 * Abstract:低风险方案 */public class LowRiskFund implements Scheme { protected Stock stock=new LowStock(); //低风险股票 protected NationalDebt nationalDebt=new NationalDebt();//国债 @Override public void buyFund() { System.out.println("---------------购买低风险方案---------------"); stock.buy(); nationalDebt.buy(); } @Override public void sellFund() { System.out.println("---------------卖出低风险方案---------------"); stock.sell(); nationalDebt.sell(); }}
客户端测试
package StructuralPattern.FacadePattern.demo1;/** * Created by yangenneng on 2017-05-17 10:58 * Abstract:客户端测试代码 */public class Client { public static void main(String[] args) { Scheme scheme1=new HighRiskFund(); scheme1.buyFund(); scheme1.sellFund(); Scheme scheme2=new LowRiskFund(); scheme2.buyFund(); scheme2.sellFund(); }}
运行结果
阅读全文
1 0
- Facade模式(外观模式)
- 外观模式(Facade)
- 外观模式(Facade Pattern)
- 外观(Facade)模式
- 外观模式(Facade Pattern)
- Facade(外观)模式
- Facade外观模式
- facade(外观模式)
- Facade 外观模式
- 外观模式(Facade)
- Facade外观模式
- Facade外观模式
- 外观模式Facade
- 外观模式(Facade)
- Facade(外观)模式
- Facade外观模式
- 外观模式(Facade)
- 外观模式(Facade)
- 事务知识点补充(ACID和数据库隔离级别)
- 导出数据库
- Variable has existed/does not exist ,Did you mean to set reuse=True/None?
- Sass使用for循环
- 如何使用retrofit2网络框架
- 外观模式-Facade
- OPC client 编写预备知识
- 软编码Flv 到Mp4 容器(五) fmp4 ftyp box 和moov>mvhd box详解
- java 正则表达式\\b
- java程序初始化的顺序是怎么样的?
- Java利用iText7画个性化表格
- 蓝桥杯基础练习 回形取数
- mysql 列传行 行转列 个人总结
- zookeeper应用案例——服务器列表动态更新