zoukankan      html  css  js  c++  java
  • 设计模式之 外观模式

    0x01:外观模式简介

    外观模式(又称门面模式),通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。UML类图如下:
    在这里插入图片描述

    其中Facade是外观角色,也叫门面角色,客户端可以调用这个角色的方法,此角色知晓子系统的所有功能和责任,将客户端的请求代理给适当的子系统对象;

    Subsystem是子系统角色,可以同时拥有一个或多个子系统,每一个子系统都不是一个单独的类,而是一个类的集合,子系统并不知道门面的存在。

    0x02:外观模式的实现

    定义子系统Subsystem
    
    public class SubSystemA {
    
        public void dosomethingA() {
            System.out.println("SubSystemA dosomethingA");
        }
    
    }
    
    public class SubSystemB {
    
        public void dosomethingB() {
            System.out.println("SubSystemB dosomethingB");
        }
    
    }
    

    外观角色Facade

    public class Facade {
    
        //被委托的对象
        private SubSystemA a;
    
        private SubSystemB b;
    
        public Facade() {
            a = new SubSystemA();
            b = new SubSystemB();
        }
    
        //提供给外部访问的方法
        public void methodA() {
            this.a.dosomethingA();
        }
    
        public void methodB() {
            this.b.dosomethingB();
        }
    
    }
    

    测试代码

    public class Client {
    
        public static void main(String[] args) {
            Facade facade = new Facade();
    
            facade.methodA();
            facade.methodB();
        }
    
    }
    

    0x03:应用

    因为程序员薪资普遍相对较高,所以一般有些小钱。那如何进行财富管理呢?自己购买股票呢?又不能很好的掌握买卖点,经常被人割韭菜。那还有什么管理财富的渠道吗?购买基金就是一个不错的渠道。

    股票、国债、期货类

    public class Stock{
    
        //买股票
        public void buy() {
            System.out.println("股票1买入");
        }
    
        //卖股票
        public void sell() {
            System.out.println("股票1卖出");
        }
    
    }
    
    public class NationalDebt{
    
        //买国债
        public void buy() {
            System.out.println("国债1买入");
        }
    
        //卖国债
        public void sell() {
            System.out.println("国债1卖出");
        }
    
    }
    
    public class Futures{
    
        //买期货
        public void buy() {
            System.out.println("期货1买入");
        }
    
        //卖期货
        public void sell() {
            System.out.println("期货1卖出");
        }
    
    }
    

    基金类

    基金经理人通过该类作为中间交互者,可以接受投资者的资金,统一对股票、国债、期货进行购买和赎回操作。

    public class Fund {
    
        private Stock stock;
    
        private NationalDebt nationalDebt;
    
        private Futures futures;
    
        public Fund() {
            stock = new Stock(); //配置30%
            nationalDebt = new NationalDebt(); //配置60%
            futures = new Futures(); //配置20%
        }
    
        //购买基金
        public void buyFund() {
            stock.buy();
            nationalDebt.buy();
            futures.buy();
        }
    
        //赎回基金
        public void sellFund() {
            stock.sell();
            nationalDebt.sell();
            futures.sell();
        }
    
    }
    

    上面这是一个基金,它配置了30%的股票+60%的国债+20%期货。

    程序员购买和赎回基金操作

    public class Client {
    
        public static void main(String[] args) {
            Fund fund = new Fund();
            //基金购买
            fund.buyFund();
            System.out.println("》》》》》》》》》》》》");
            //基金赎回
            fund.sellFund();
        }
    
    }
    

    这样的话,再也不怕炒股被割韭菜了。

  • 相关阅读:
    RA-Embedding-based Retrieval in Facebook Search
    RA-Recommending What Video to Watch Next: A Multitask Ranking System
    家事杂谈-2
    工作体会-3
    CCS
    CCS
    CCS
    CCS
    CCS
    CCS
  • 原文地址:https://www.cnblogs.com/happyhuangjinjin/p/14317281.html
Copyright © 2011-2022 走看看