![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 55
yuan同学
留下一点点思考。
展开
-
设计模式---代理模式
静态代理 某个对象提供一个代理,代理角色固定,以控制对这个对象的访问。 代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。 举例子:小明现在想去追小红,但是他害羞不敢直接追,通过小代去追小红。这个时候,小明就是被代理类,小代就是代理类,因为小明要让小代去送公仔、送花、送巧克力,这些行为,小代肯定也是要有的,所以小明和小代是集成同一个接口。 最求者和代理者的公共行为: /** *原创 2021-09-03 17:48:24 · 76 阅读 · 0 评论 -
设计模式---装饰模式
装饰模式 定义:动态地给一个对象添加一些额外的职能,就增加功能来说,装饰模式比生成子类更为灵活。 举列子:衣服、帽子、鞋子等可以理解为对人的装饰。 "Component"是定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责(不是必须的)。Decorator装饰抽象类,继承了Component,从外类来拓展Component类的功能,但对于Component来说,是无需知道Decorator的存在的。至于ConcreteDe原创 2021-09-03 10:39:17 · 52 阅读 · 0 评论 -
设计模式---策略模式
策略模式:它定义了算法家族,分别封装起来,让它们之间开源互相替代,此模式让算法的变化,不会影响到使用算法的客户。 运用场景:商场收银软件,营业员根据客户所购买的单价和数量,向客户收费。但是根据活动的不同,每次的价格都不一样。比如,全场打八折、全场打五折、满300减100等活动。如果用if-else作处理的话,就显得很累赘,加上如果拓展更多的活动,只能添加更多的分支。 CashContext类,是对策略的运用。 public class CashContext { //维护着策略类的引用,调用策略,只需要设原创 2021-08-31 16:47:40 · 56 阅读 · 0 评论 -
设计模式-策略模式
1.介绍: 1)策略模式(Strategy Pattern)中,定义算法族(策略组),分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。比如下文中出现的野鸭是使用算法的客服,实现会飞接口的类组是算法组,在野鸭类中可以使用、替换算法组中某个类。 2)这个算法体现了几个设计原则,第一把变化的代码从不变的代码中分离出来;第二针对接口编程而不是具体类(定义了策略接口);第三多用组合/聚合,少用继承(客服通过组合方式使用策略) 2.原理类图 3.策略模式的注意事项和细节 策略模式的关原创 2021-01-25 17:21:20 · 128 阅读 · 0 评论 -
设计模式-组合模式
组合模式的类图: 类图当中有三个类,一个是Component(节点的统一接口),它的目的是为了统一节点的操作。接下来的两个实现类,一个则是非叶子节点(Composite),它可以有子节点。另外一个则是叶子节点(Leaf),它不能含有子节点。 首先,文件系统中,叶子节点是文件,非叶子节点是文件夹,所以Leaf和Composite实现类就是文件和文件夹。对于Component接口,其实也很简单,就是提取文件和文件夹的共性就可以了。 很显然,二者的共性有很多,比如都可以进行复制、剪切、删除、重命名等操作。但是不原创 2021-01-13 11:51:43 · 62 阅读 · 0 评论