随笔分类 -  设计模式汇总

摘要:职责链模式中:每个接收者都包含另外一个接受者的引用,如果一个对象不能处理请求,那么就会把相同的请求传给下一个接收者 抽象类 public abstract class Handler { //后继者,即如果处理不了请求要把任务丢给谁 private Handler successor; public 阅读全文
posted @ 2021-07-29 19:33 一拳超人的逆袭 阅读(34) 评论(0) 推荐(0)
摘要:Strategy(抽象策略):抽象策略类,并且定义策略执行入口 ConcreteStrategy(具体策略):实现抽象策略,实现algorithm方法 Context(环境):运行特定的策略类。 策略模式需要一个策略接口,不同的策略实现不同的实现类,在具体业务环境中仅持有该策略接口,根据不同的场景使 阅读全文
posted @ 2021-07-29 19:06 一拳超人的逆袭 阅读(73) 评论(0) 推荐(0)
摘要:状态模式( state Pattern)的定义如下:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象( Objects for States),状态模式是对象行为型模式 状态模式包含如下角色: Context:环境类,也称为上下文,它定义了客户感兴趣的接口,维 阅读全文
posted @ 2021-07-29 17:00 一拳超人的逆袭 阅读(49) 评论(0) 推荐(0)
摘要:终结符表达式(Terminal Expression):实现文法中与终结符有关的解释操作。文法中每一个终结符都有一个具体的终结符表达式与之相对应。比如我们的R=M+N运算,M和N就是终结符,对应的解析M和N的解释器就是终结符表达式。非终符结表达式(Nonterminal Expression):实现 阅读全文
posted @ 2021-07-29 16:06 一拳超人的逆袭 阅读(51) 评论(0) 推荐(0)
摘要:/** * @author wuyimin * @create 2021-07-29 11:16 * @description 原发器角色 */ public class Chessman { //棋子的姓名 x,y坐标 private String chessName; private int x 阅读全文
posted @ 2021-07-29 12:07 一拳超人的逆袭 阅读(40) 评论(0) 推荐(0)
摘要:中介者模式是用一个中介对象来封装一系列的对象交互,中介者使得各个对象不需要显示的互相调用,使其耦合松散,而且可以独立的改变他们之间的交互 本来的情况是客户找houseMaster,houseMaster找wife,这样一层一层追下去,现在全部交给中介来做 抽象同事类 /** * @author wu 阅读全文
posted @ 2021-07-29 10:38 一拳超人的逆袭 阅读(72) 评论(0) 推荐(0)
摘要:观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。 观察者接口:实现更新方法 public interface 阅读全文
posted @ 2021-07-28 19:13 一拳超人的逆袭 阅读(37) 评论(0) 推荐(0)
摘要:提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示 接口 /** * @author wuyimin * @create 2021-07-28 18:02 * @description 抽象集合接口 */ public interface Aggregate { 阅读全文
posted @ 2021-07-28 18:10 一拳超人的逆袭 阅读(31) 评论(0) 推荐(0)
摘要:在被访问的类里添加一个接待外部访问者的接口,在对一个对象结构中的对象做多个复杂操作的时候,又 不想让操作污染这些对象,可以使用该模式 UML类图介绍: Bill接口,这个接口有一个accept方法去接受访问者 /** * @author wuyimin * @create 2021-07-28 15 阅读全文
posted @ 2021-07-28 16:48 一拳超人的逆袭 阅读(46) 评论(0) 推荐(0)
摘要:我们经常需要对一些对象发送命令请求,但是我们并不知道是哪个具体的对象接受到了这些命令,这个时候可以使用命令模式 命令模式会将一个请求封装为一个对象,来使用不同的参数表达不同的请求,同时命令应该是可以撤销的 对于这样一个遥控器,使用命令模式去实现它的功能 接口类和几个实现类 /** * @author 阅读全文
posted @ 2021-07-28 11:43 一拳超人的逆袭 阅读(45) 评论(0) 推荐(0)
摘要:在一个抽象类公开定义了执行它的方法的模板,它的子类可以按照需要重写方法实现,单调用将以抽象类种定义的方式进行 public abstract class Drink { //不允许子类重写此方法 public final void make() { add(); doSomething(); giv 阅读全文
posted @ 2021-07-28 10:14 一拳超人的逆袭 阅读(36) 评论(0) 推荐(0)
摘要:为一个对象提供一个替身,来控制这个对象的访问。通过代理对象访问目标对象,这样做的好处是可以在目标对象实现的基础上,增强额外的功能操作 被代理的对象可以是远程对象,创建开销大的对象,需要安全控制的对象 代理模式主要分为三种 静态代理,动态代理(也叫接口代理、jdk代理),cglib代理(可以在内存创建 阅读全文
posted @ 2021-07-27 17:01 一拳超人的逆袭 阅读(41) 评论(0) 推荐(0)
摘要:运用共享技术有效的支持大量细粒度的对象,常用于系统底层的开发,像数据库连接池是单例模式但是连接池里的对象是享元模式的经典运用场景 享元模式能解决重复对象的内存浪费问题,当系统种有大量相似对象,需要缓冲池时,不需要总是创建新对象,可以从缓冲池里面拿,这样可以降低系统内存,同时提高效率 抽象类: /** 阅读全文
posted @ 2021-07-27 11:36 一拳超人的逆袭 阅读(76) 评论(0) 推荐(0)
摘要:外观模式为子系统种的一组接口提供了一个一致的界面,此模式定义了一个高层接口使得这一子系统更加容易使用 外观模式就是解决多个复杂接口带来的操作问题,起到简化用户操作使用的效果 /** * @author wuyimin * @create 2021-07-27 10:26 * @description 阅读全文
posted @ 2021-07-27 10:55 一拳超人的逆袭 阅读(66) 评论(0) 推荐(0)
摘要:抽象基类 /** * @author wuyimin * @create 2021-07-26 19:01 * @description 抽象类 */ public abstract class Component { public Component(String name) { this.nam 阅读全文
posted @ 2021-07-26 19:43 一拳超人的逆袭 阅读(46) 评论(0) 推荐(0)
摘要:动态的将新功能附加到对象上 实例 最基础的抽象类Drink /** * @author wuyimin * @create 2021-07-26 17:14 * @description 饮料的抽象类 包含描述,价格以及子类计算总价的方法 */ public abstract class Drink 阅读全文
posted @ 2021-07-26 17:07 一拳超人的逆袭 阅读(35) 评论(0) 推荐(0)
摘要:主要是为了将抽象和实现行为分开来 传统方法解决这个问题的时候每次增加一个品牌或者手机类型都会导致要增加三个类别的手机,比如增加中兴品牌就要增加中兴的折叠,直立和选择 给定接口Brand和它的两个实现类 /** * @author wuyimin * @create 2021-07-26 16:22 阅读全文
posted @ 2021-07-26 16:59 一拳超人的逆袭 阅读(34) 评论(0) 推荐(0)
摘要:让原本接口不匹配不能在一起工作的两个类通过适配器类在一起工作 类适配器/对象适配器 /** * @author wuyimin * @create 2021-07-26 9:56 * @description 五伏充电器接口 */ public interface Ivotage5V { publi 阅读全文
posted @ 2021-07-26 11:05 一拳超人的逆袭 阅读(57) 评论(0) 推荐(0)
摘要:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式的使用场景 1)相同的方法,不同的执行顺序,产生不同的事件结果时,可以使用建造者模式。 2)多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不想同时,可以使用建造者模式。 3)产品类非常复杂,或者产品类 阅读全文
posted @ 2021-07-25 21:57 一拳超人的逆袭 阅读(55) 评论(0) 推荐(0)
摘要:使用原型去拷贝出多个对象 克隆羊案例: /** * @author wuyimin * @create 2021-07-25 16:51 * @description 实现克隆接口,调用父类的克隆方法 */ public class Sheep implements Cloneable { Stri 阅读全文
posted @ 2021-07-25 18:03 一拳超人的逆袭 阅读(37) 评论(0) 推荐(0)