随笔分类 -  设计模式

摘要:定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 通俗的讲,状态模式主要解决当控制一个对象状态转换的条件表达式(判断过多)过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。 抽象状态类: public abstract cla 阅读全文
posted @ 2022-02-20 18:03 WXY_WXY 阅读(56) 评论(0) 推荐(0) 编辑
摘要:定义:抽象工厂模式和工厂模式非常像,从定义出发,提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。(就像下面的实例一样,只有一个user类的时候其实就是工厂模式,但如果增加了department的时候,也就是多个产品,那么这就是抽象工厂模式)。 实体类: public class 阅读全文
posted @ 2022-02-09 22:13 WXY_WXY 阅读(29) 评论(0) 推荐(0) 编辑
摘要:观察者模式又叫做发布-订阅模式。 定义:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使他们能够自动更新自己。 Subject:主题或抽象通知者。把所有对观察者对象的引用保存在一个聚合里面。 public abstract cl 阅读全文
posted @ 2022-02-07 22:23 WXY_WXY 阅读(25) 评论(0) 推荐(0) 编辑
摘要:定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 宽泛的讲:如果你需要将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示(客户端需要一个胖小人,具体怎么画靠我们自己去实现,客户端不需要知道)。如果我们用了建造者模式,那么用户就只需指定需要建造的类 阅读全文
posted @ 2022-02-06 22:17 WXY_WXY 阅读(24) 评论(0) 推荐(0) 编辑
摘要:定义:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 public class SubSystemone { public void methodOne(){ System.out.println("子系统方法一"); } } public c 阅读全文
posted @ 2022-02-06 20:23 WXY_WXY 阅读(25) 评论(0) 推荐(0) 编辑
摘要:例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。这样的例子在生活中还有很多,例如,一个人每 阅读全文
posted @ 2022-02-05 20:53 WXY_WXY 阅读(41) 评论(0) 推荐(0) 编辑
摘要:定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 简单工厂vs工厂方法:简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择动态实例化相关的类,对于客户端来说,去除了具体产品的依赖(像我们之前写的简单工厂博客,客户端只用传入加减乘 阅读全文
posted @ 2022-02-05 19:08 WXY_WXY 阅读(35) 评论(0) 推荐(0) 编辑
摘要:定义:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。 //对象接口 public abstract class Component { public abstract void operation(); } ConcreteComponent:定义一个具体的对象,也 阅读全文
posted @ 2022-02-02 19:18 WXY_WXY 阅读(26) 评论(0) 推荐(0) 编辑
摘要:1.单一职责原则 定义:就一个类而言,应该仅有一个引起它变化的原因。 生活中例子:就像我们的手机一样,他有很多的功能,可以玩游戏、拍照、听音乐等等。就单单拍照而言,他却比不上照相机。这就引申到代码,一块代码只做一件事。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者 阅读全文
posted @ 2022-02-01 20:49 WXY_WXY 阅读(24) 评论(0) 推荐(0) 编辑
摘要:定义:它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。 单看定义,是不是觉得有点虚,让我们通过生活中的例子来走进策略模式。 场景:商场收银的促销,打折或者返利的一个收银系统。 private double getResult(String cho 阅读全文
posted @ 2022-01-31 18:13 WXY_WXY 阅读(44) 评论(0) 推荐(0) 编辑
摘要:在了解简单工厂模式之前,我们可以先了解一下强弱耦合这么一个概念,然后在引入为什么使用简单工厂模式。 直接上代码,这可能是大部分人直接想到的思路。 System.out.println("请输入数字A:"); Scanner scanA = new Scanner(System.in); String 阅读全文
posted @ 2022-01-30 00:32 WXY_WXY 阅读(17) 评论(0) 推荐(0) 编辑