{"id":21007979,"url":"https://github.com/lflxp/study","last_synced_at":"2025-08-13T22:05:58.795Z","repository":{"id":150080928,"uuid":"99703011","full_name":"lflxp/study","owner":"lflxp","description":"设计模式笔记","archived":false,"fork":false,"pushed_at":"2017-08-30T03:39:42.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-20T10:48:26.518Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lflxp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-08T14:39:05.000Z","updated_at":"2017-08-08T16:16:55.000Z","dependencies_parsed_at":"2023-06-05T03:15:28.342Z","dependency_job_id":null,"html_url":"https://github.com/lflxp/study","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lflxp%2Fstudy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lflxp%2Fstudy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lflxp%2Fstudy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lflxp%2Fstudy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lflxp","download_url":"https://codeload.github.com/lflxp/study/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243428436,"owners_count":20289317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T09:11:04.308Z","updated_at":"2025-03-13T15:19:16.738Z","avatar_url":"https://github.com/lflxp.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# study\n设计模式笔记\n\n# Iterator 模式\n1. 通过接口的继承或组合来实现方法与逻辑抽离 复用性更强\n## 什么时候使用Adapter\n\n\u003e Adapter模式会对现有的类进行适配，生成新的类。通过该模式可以很方便的创建我们需要的方法群。当出现Bug时，由于我们很明确地知道Bug不在现有的类（Adapter角色）中，所以只需要调查扮演Adapter角色的类即可。这样排查代码就会变得非常简单。\n\n## 如果没有现成的代码\n\n\u003e 使用Adapter模式可以在完全不改变现有代码的前提下使现有代码适配于新的接口(API)。此外，在Adapter模式中，并非一定需要现成的代码。只要知道现有类的功能，就可以编写出新的类了。\n\n# TemplateMethod模式\n\n\u003e 在父类中定义处理流程的框架，在子类中实现具体处理的模式就称为：Template Method模式\n\n# 等额本息\n\n\u003e 等额本息还款计算公式 \n设贷款额为a，月利率为i，年利率为I，还款月数为n，每月还款额为b，还款利息总和为Y \n1：I＝12×i \n2：Y＝n×b－a \n3：第一月还款利息为：a×i \n第二月还款利息为：〔a－（b－a×i）〕×i＝（a×i－b）×（1＋i）^1＋b \n第三月还款利息为：｛a－（b－a×i）－〔b－（a×i－b）×（1＋i）^1－b〕｝×i＝（a×i－b）×（1＋i）^2＋b \n第四月还款利息为：＝（a×i－b）×（1＋i）^3＋b \n..... \n第n月还款利息为：＝（a×i－b）×（1＋i）^（n－1）＋b \n求以上和为：Y＝（a×i－b）×〔（1＋i）^n－1〕÷i＋n×b \n4：以上两项Y值相等求得 \n月均还款:b＝a×i×（1＋i）^n÷〔（1＋i）^n－1〕 \n支付利息:Y＝n×a×i×（1＋i）^n÷〔（1＋i）^n－1〕－a \n还款总额:n×a×i×（1＋i）^n÷〔（1＋i）^n－1〕 \n注:a^b表示a的b次方。\n\n## 一、什么是等额本息还款\n\n\u003e　　等额本息还款，也称定期付息，即借款人每月按相等的金额偿还贷款本息，其中每月贷款利息按月初剩余贷款本金计算并逐月结清。把按揭贷款的本金总额与利息总额相加，然后平均分摊到还款期限的每个月中。作为还款人，每个月还给银行固定金额，但每月还款额中的本金比重逐月递增、利息比重逐月递减。\n\n## 二、等额本息还款计算方法\n\n\u003e　　每月还款额计算公式如下： [贷款本金×月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]\n　　下面举例说明： 假定借款人从银行获得一笔20万元的个人住房贷款，贷款期限20年，贷款月利率4.2‰，每月还本付息。按照上述公式计算，每月应偿还本息和为1324.33元。 上述结果只给出了每月应付的本息和，因此需要对这个本息和进行分解。仍以上例为基础，一个月为一期，第一期贷款余额20万元，应支付利息\n　　840.00元(200000×4.2‰)，所以只能归还本金484.33元，仍欠银行贷款199515.67元;第二期应支付利息837.97元(199515.67×4.2‰)，归还本金486.37元，仍欠银行贷款199029.30元，以此类推。\n　　三、等额本息与等额本金哪种更划算\n　　1、等额本息还款法的优缺点\n　　优点：方便，还款压力小。每月还款额相等，便于购房者计算和安排每期的资金支出。因为平均分摊了还款金额，所以还款压力也平均分摊，特别适合前期收入较低，经济压力大，每月还款负担较重的人士。\n　　缺点：利息总支出高。在每期还款金额中，前期利息占比较大，后期本金还款占比逐渐增大。总体计算下来，利息总支出是所有还款方式中最高的。\n　　2、等额本息还款和等额本金还款区别\n　　在实际操作中,等额本息更利于客户的掌握,方便客户还款.事实上有很多客户在进行比较后,还是愿意选择了“等额还款方式”，该方法每月的还款额固定，可以有计划地控制家庭收入的支出，也便于每个家庭根据自己的收入情况，确定还贷能力。因为这些客户也同样看到了因为时间使资金的使用价值产生了不同，简单说就是等额本息还款法由于自己占用银行的本金时间长，自然就要多付些利息；等额本金还款法随着本金的递减，自己占用银行的本金时间短，利息也自然减少，并不存在自己吃亏，而银行赚取更多利息的问题。\n　　此种还款模式相对于等额本金还款法的劣势在于支出利息较多，还款初期利息占每月供款的大部分，随本金逐渐返还供款中本金比重增加。\n　　3、等额本息还款法的适合人群\n　　适合人群：家庭收入较为稳定的人群，特别是暂时收入比较少，经济压力比较大的人士。因为虽然每个月还款金额相同，但是所含本金和利息的比例不同，初期所还部分，利息占较大比例，而贷款本金所占的比例较低，不适合有提前还贷打算的人士。\n\n## 四、贷款利息多少的决定因素\n\n\u003e　　钱在银行存一天就有一天的利息，存的钱越多，得到的利息就越多。同样，对于贷款来说也一样，银行的贷款多用一天，就要多付一天的利息，贷款的金额越大，支付给银行的利息也就越多。\n　　银行利息的计算公式是：利息＝资金额×利率×占用时间。\n　　因此，利息的多少，在利率不变的情况下，决定因素只能是资金的实际占用时间和占用金额的大小，而不是采用哪种还款方式。这是铁定不变的道理！\n　　以上可以看出不同的还款方式没有哪个更划算之说，不同的还款方式适合不同的人群，不管采用哪种方式银行都不会做吃亏的买卖，客户也不可能比银行更加精明。所以选择适合自己的就好。\n\n# 等额本金\n\n\u003e 等额本金是在还款期内把贷款数总额等分，每月偿还同等数额的本金和剩余贷款在该月所产生的利息，这样由于每月的还款本金额固定，而还的利息越来越少，因此起初还款压力较大，但是随时间的推移每月还款数也越来越少。等额本金利息计算：第N月利息=（贷款本金-已归还本金累计额）×月利率→第N月利息=【贷款本金-（N-1）×贷款本金÷总还款月数】×月利率→第N月还款额=（贷款本金÷还款月数）+第N月利息。举例：如果我们从银行贷款100万，期限20年，年利率是3.6%，那么月利率就是0.3%（3.6%/12），每月的还款额中本金部分是固定的，但是每月需要还的利息是不同的。\n每月本金还款额=100/（20×12）=4166.67元。第一个月利息=100×0.3%=3000元，第一个月还款额共计：4166.67+3000=7166.67元；第二个月利息=（100-0.4166.67）×0.3%=2987.5元；第二个月还款额总计：4166.67+2987.5=7154.17元；","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flflxp%2Fstudy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flflxp%2Fstudy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flflxp%2Fstudy/lists"}