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

1.1 牛市股票还会亏钱?

        炒股,碰到熊市,亏得一塌糊涂。

        "我们公司的人现在都在炒股票,其实大部分人都不太懂,就是因为现在股市行情很火,于是都在跟风呢!"

        刚入市的人,什么都不懂,看好一只快涨跌的股票,买进去,第二天马上就跌了。"有一个好像还可以,赚了不少钱,具体不太清楚,但另外几个人都是刚入市的,什么都不懂,特别是一个叫顾韵梅的同事,她说得蛮搞笑的,'今天看好了一只快涨停的股票,买进去,第二天马上就跌了。明天再去换另一只好的股票,几天都不涨,等一卖出,马上就涨停。'于是乎,在大好的牛市行情里,连连亏损,天天在我们面前抱怨呀。"

        "哈,典型的新股民特征嘛。其实不会炒股票的话,买一只好股票放在那里所谓的'捂股'是最好的做股票策略了。"
        "自己的钱买了股票,天天都在变化,谁能不关心,特别是刚开始,都希望能涨涨涨。尽管不现实,不过赚钱的人还是有的是。不过一打开股票软件,一千多只股票,红红绿绿,又是指数大盘,又是个股K线指标,一下说基本面如何如何重要,一下又说什么有题材才可以赚大钱,头晕眼花,迷茫困惑呀。"
        "要是有懂行的人帮帮忙就好了。"
        "哈,基金就是你的帮手呀。它将投资者分散的资金集中起来,交由专业的经理人进行管理,投资于股票、债券、外汇等领域,而基金投资的收益归持有投资者所有,管理机构收取一定比例的托管管理费用。想想看,这样做有什么好处?"
        "我感觉,由于基金会买几十支好的股票,不会因为某个股票的大跌而影响收益,尽管每个人的钱不多,但大家放在一起,反而容易达到好的投资效果。"
        "说得不错,那如果是你自己做股票,为什么风险反而大了?"
        "因为我需要了解股票的各种信息,需要预测它的未来,还要买入和卖出的时机合适,这其实是很难做到的。专业的基金经理人相对专业,所以就不容易像散户那么盲目。"
        "尽管我们在谈股票,我还是想问问你,投资者买股票,做不好的原因和软件开发当中的什么类似?而投资者买基金,基金经理人用这些钱去做投资,然后大家获利,这其实又体现了什么?"
        "我知道了,你的意思是说,由于众多投资者对众多股票的联系太多,反而不利于操作,这在软件中是不是就称为耦合性过高。而有了基金以后,变成众多用户只和基金打交道,关心基金的上涨和下跌就可以了,而实际上的操作却是基金经理人在与上千支股票和其他投资产品打交道。"
        这段话说得非常好,由于投资者要面对这么多的股票,又不专业,所以很难做好,但要投资者买一支好的基金,这应该是不难的,更直接点说,如果你连投资基金都不能赚到钱,那说明投资股票就更加难赚到钱,投资的目的还不是为了赚钱,那为什么不稳妥一些呢?这里其实提到了一个在面向对象开发当中用得非常多的设计模式——外观模式,又叫门面模式。

1.2 股民炒股代码

代码结构图

package code.chapter12.facade1;public class Test {public static void main(String[] args){System.out.println("**********************************************");		System.out.println("《大话设计模式》代码样例");System.out.println();		Stock1 stock1 = new Stock1();Stock2 stock2 = new Stock2();NationalDebt1 nd1 = new NationalDebt1();Realty1 rt1 = new Realty1();stock1.buy();stock2.buy();nd1.buy();rt1.buy();stock1.sell();stock2.sell();nd1.sell();rt1.sell();System.out.println();System.out.println("**********************************************");}
}//股票1
class Stock1{//卖股票public void sell(){System.out.println("股票1卖出");}//买股票public void buy(){System.out.println("股票1买入");}
}
//股票2
class Stock2{//卖股票public void sell(){System.out.println("股票2卖出");}//买股票public void buy(){System.out.println("股票2买入");}
}//国债1
class NationalDebt1{//卖国债public void sell(){System.out.println("国债1卖出");}//买国债public void buy(){System.out.println("国债1买入");}
}
//房地产1
class Realty1{//卖房地产public void sell(){System.out.println("房地产1卖出");}//买房地产public void buy(){System.out.println("房地产1买入");}
}

1.3 投资基金代码

如果我们现在增加基金类

代码机构图

package code.chapter12.facade2;public class Test {public static void main(String[] args){System.out.println("**********************************************");		System.out.println("《大话设计模式》代码样例");System.out.println();		Fund fund1 = new Fund();//基金购买fund1.buyFund();//基金赎回fund1.sellFund();System.out.println();System.out.println("**********************************************");}
}//基金类
class Fund{Stock1 stock1;Stock2 stock2;NationalDebt1 nd1;Realty1 rt1;public Fund(){stock1 = new Stock1();stock2 = new Stock2();nd1 = new NationalDebt1();rt1 = new Realty1();}public void buyFund(){stock1.buy();stock2.buy();nd1.buy();rt1.buy();}public void sellFund(){stock1.sell();stock2.sell();nd1.sell();rt1.sell();}//基金很多买入卖出操作,持仓比例等,//无需提前告知客户
}//股票1
class Stock1{//卖股票public void sell(){System.out.println("股票1卖出");}//买股票public void buy(){System.out.println("股票1买入");}
}//股票2
class Stock2{//卖股票public void sell(){System.out.println("股票2卖出");}//买股票public void buy(){System.out.println("股票2买入");}
}
//国债1
class NationalDebt1{//卖国债public void sell(){System.out.println("国债1卖出");}//买国债public void buy(){System.out.println("国债1买入");}
}
//房地产1
class Realty1{//卖房地产public void sell(){System.out.println("房地产1卖出");}//买房地产public void buy(){System.out.println("房地产1买入");}
}

1.4 外观模式

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

四个子系统的类:

package code.chapter12.facade0;public class Test {public static void main(String[] args){System.out.println("**********************************************");		System.out.println("《大话设计模式》代码样例");System.out.println();		Facade facade = new Facade();facade.methodA();facade.methodB();System.out.println();System.out.println("**********************************************");}
}//外观类
//它需要了解所有的子系统的方法或属性,进行组合,以备外界调用
class Facade{SubSystemOne one;SubSystemTwo two;SubSystemThree three;SubSystemFour four;public Facade(){one = new SubSystemOne();two = new SubSystemTwo();three = new SubSystemThree();four = new SubSystemFour();}public void methodA(){one.methodOne();two.methodTwo();three.methodThree();four.methodFour();}public void methodB(){two.methodTwo();three.methodThree();}}//子系统1
class SubSystemOne{public void methodOne(){System.out.println("子系统方法一");}
}
//子系统2
class SubSystemTwo{public void methodTwo(){System.out.println("子系统方法二");}
}
//子系统3
class SubSystemThree{public void methodThree(){System.out.println("子系统方法三");}
}
//子系统4
class SubSystemFour{public void methodFour(){System.out.println("子系统方法四");}
}

        "对于面向对象有一定基础的朋友,即使没有听说过外观模式,也完全有可能在很多时候使用它,因为它完美地体现了依赖倒转原则和迪米特法则的思想,所以是非常常用的模式之一。"

1.5 何时使用外观模式

        那外观模式在什么时候使用最好呢?

        "这要分三个阶段来说。首先,在设计初期阶段,应该要有意识地将不同的两个层分离,比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层、业务逻辑层和表示层的层与层之间建立外观Facade,这样可以为复杂的子系统提供一个简单的接口,使得耦合大大降低。其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,大多数的模式使用时也都会产生很多很小的类,这本是好事,但也给外部调用它们的用户程序带来了使用上的困难,增加外观Facade可以提供一个简单的接口,减少它们之间的依赖。第三,在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,但因为它包含非常重要的功能,新的需求开发必须要依赖于它。此时用外观模式Facade也是非常合适的。你可以为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。[R2P]"


        "嗯,对的,对于复杂难以维护的老系统,直接去改或去扩展都可能产生很多问题,分两个小组,一个开发Facade与老系统的交互,另一个只要了解Facade的接口,直接开发新系统调用这些接口即可,确实可以减少很多不必要的麻烦。"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/793613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day84:服务攻防-端口协议桌面应用QQWPS等RCEhydra口令猜解未授权检测

目录 端口协议-口令爆破&未授权 弱口令爆破 FTP:文件传输协议 RDP:Windows远程桌面协议 SSH:Linux安全外壳协议 未授权案例(rsync) 桌面应用-QQ&WPS&Clash QQ RCE 漏洞复现 WPS RCE 漏洞复现 Clas* RCE 漏洞复现 知识点…

【攻防世界】ics-05

php://filter 伪协议查看源码 preg_replace 函数漏洞 1.获取网页源代码。多点点界面,发现点云平台设备维护中心时,页面发生变化。 /?pageindex 输入什么显示什么,有回显。 用php://filter读取网页源代码 ?pagephp://filter/readconvert.…

设计模式 --5观察者模式

观察者模式 观察者模式的优缺点 优点 当一个对象改变的时候 需要同时改变其他对象的相关动作的时候 ,而且它不知道有多少具体的对象需要改变 应该考虑使用观察者模式 。观察者模式的工作就是解除耦合 让耦合双方都依赖与抽象 而不是具体 是的各自改变都不会影响另…

【文献分享】ALKEMIE:加速材料发现和设计的智能计算平台

题目:ALKEMIE: An intelligent computational platform for accelerating materials discovery and design 链接:DOI: 10.1016/j.commatsci.2020.110064 ALKEMIE:加速材料发现和设计的智能计算平台 摘要 通过传统的试错方式开发具有目标特性…

ChatGPT 的核心 GPT 模型:探究其生成式预训练变换架构的革新与应用潜力

GPT(Generative Pre-trained Transformer)模型是一种深度学习模型,由OpenAI于2018年首次提出,并在随后的几年中不断迭代发展,包括GPT-2、GPT-3以及最新的GPT-4。GPT模型在自然语言处理(NLP)领域…

ssm基于HTML5的出租车管理系统论文

摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此出租车信息的管…

Linux云计算之Linux基础3——Linux基本认识操作

1、终端 终端(terminal):人和系统交互的必要设备,人机交互最后一个界面(包含独立的输入输出设备) 物理终端(console):直接接入本机器的键盘设备和显示器虚拟终端(tty):通过软件方式虚拟实现的终端。它可以…

C++相关概念和易错语法(4)(构造函数、析构函数)

一、构造函数 1.实现的功能:实例化对象的时候默认自动调用,相当于初始化。 条件:在书写时要满足构造函数的规范(函数名 类名,不写返回值,也没有返回值),可以用inline来修饰。 2.自…

4.6 offset指令,jmp short指令,far,dword ptr各种跳转指令

4.6 offset指令,jmp short指令,far,dword ptr各种跳转指令 可以修改IP,或同时修改CS和IP的指令统称为转移指令。概括的讲,转移指令就是可以控制CPU执行内存中某处代码的指令 1. 转移指令 1.1 8086CPU的转移行为有以…

按照指定的分隔符和次数从右侧开始分割字符串元素numpy.char.rsplit()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 按照指定的分隔符和次数 从右侧开始分割字符串元素 numpy.char.rsplit() [太阳]选择题 请问关于以下代码表述错误的选项是? import numpy as np a np.array([a b c, x,y,z, 1 2,…

HackTheBox-Mist

整体思路 端口扫描->Pluck CMS组件文件读取漏洞->文件上传获取shell->创建指向exe的快捷方式来提权-> 信息收集&端口利用 namp -sSVC 10.10.11.17目标只开放了80端口,将mist.htb加入到hosts文件后,访问mist.htb Pluck CMS文件读取 在…

3.6k star, 免费开源跨平台的数据库管理工具 dbgate

3.6k star, 免费开源跨平台的数据库管理工具 dbgate 分类 开源分享 项目名: dbgate -- 免费开源跨平台的数据库管理工具 Github 开源地址: GitHub - dbgate/dbgate: Database manager for MySQL, PostgreSQL, SQL Server, MongoDB, SQLite and others. Runs under…

Ps:合并到 HDR Pro

Ps菜单:文件/自动/合并到 HDR Pro Automate/Merge to HDR Pro 合并到 HDR Pro Merge to HDR Pro命令可以将同一场景的具有不同曝光度的多个图像合并起来,从而捕获单个 HDR 图像中的全部动态范围。 合并到 HDR Pro 命令分两步进行。 首先,需要…

Day82:服务攻防-开发组件安全Solr搜索Shiro身份Log4j日志本地CVE环境复现

目录 J2EE-组件Solr-本地demo&CVE 命令执行(CVE-2019-17558) 远程命令执行漏洞(CVE-2019-0193) Apache Solr 文件读取&SSRF (CVE-2021-27905) J2EE-组件Shiro-本地demo&CVE CVE_2016_4437 Shiro-550Shiro-721(RCE) CVE-2020-11989(身…

Emacs之解除comment-region绑定C-c C-c快捷键(一百三十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【资源分享】Eclipse最新版本免费安装下载

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验,帮助大家尽早适应研究生生活,尽快了解科研的本质。祝一切顺利!—…

成为不可替代的人,优秀到不能被忽视

一、资料描述 本套个人成长资料,大小30.89M,共有21个文件。 二、资料目录 00发刊词 成为不可替代的人.pdf 01累死你的不是工作,是错的职场价值观.pdf 02教你选好行业,远离裁员降薪.pdf 03如何选对公司,让高薪升值…

JavaScript中堆栈内存管理机制及其在深拷贝与浅拷贝场景中的应用与解析

一.堆栈的定义 1.栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。 结论:后进先出(Last In First Out),简称为LIFO线性表。 栈的应用有:数制转换,语法词法分析&…

刷题之Leetcode704题(超级详细)

704. 二分查找 力扣题目链接(opens new window)https://leetcode.cn/problems/binary-search/ 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标&am…

聚合DNS管理系统v1.0全新发布 域名解析管理系统

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 聚合DNS管理系统可以实现在一个网站内管理多个平台的域名解析,目前已支持的域名平台有:阿里云、腾讯云、华为云、西部数码、CloudFlare。本系统支持多用户&…