设计模式
chaojidage
我只是想多赚点币子,然后好下资源。
展开
-
模板模式
模式简介 先说一个场景,考生考试,老师发下来的卷子,然后学生在上面答题。每个人的卷子都是一样的。交卷之后每张卷子只有答案不一样。 这样的话,因为卷子是一样的,只有答案不一样。因为卷子是一样的。所以可以让空卷子做一个父类,然后让每个人的卷子作为子类,继承空卷子。这就是模板模式。 我写了一个demo,不过这个demo和我说的不太一样。我写的是这样的。以去银行为背景。 1.原创 2018-01-11 20:09:54 · 184 阅读 · 0 评论 -
简单工厂模式
这是第一发,我要立志记录一下我23种设计模式的学习记录,突然感觉如果写一个博客的话,那么我会记录的很清楚。 简单工厂原则的实质在于修改原来代码的时候不去修改其他方法的逻辑。 比如,我们写一个计算器,如果有一开始有一个加减乘除功能,现在需要一个开更号的功能,该怎么办? 如果按照没有学过设计模式的情况下,我们需要增加一个方法,在这个时候,因为这个方法是和原来的方法在一个类里面,所以我们修原创 2018-01-06 16:06:16 · 133 阅读 · 0 评论 -
工厂模式
之前写的那个简单工厂模式,虽然解决了修改时避免修改其他业务逻辑的问题,并且将对象的创建工作和客户端进行了剥离。,但是违反了开放封闭原则 这个有这样的一个问题,就是每次增加逻辑的时候,就需要修改工厂类,就很挫,最好是能让他拓展一下。符合开放封闭原则。我们可以让工厂类成为一个接口,然后具体生成什么子类,在客户端中实现。 工厂类 public interface IFactory {原创 2018-01-07 11:30:02 · 152 阅读 · 0 评论 -
抽象工厂
上一篇说了工厂方法,还有一个抽象工厂,工厂方法中的抽象工厂只有一个产品族,那么如果有两个或者两个以上的产品族的话,那该怎么办捏?很简答,就是在抽象工厂中,多写一个抽象方法,就是抽象工厂了。 举个例子,计算器,输入两个数,选择运算符号,得出两个答案,一个是整数答案,一个是浮点数答案。 public interface IFactory { Operation CreateOper原创 2018-01-07 12:26:49 · 133 阅读 · 0 评论 -
策略模式
策略模式,首先,策略模式是定义一组算法,让他们之间可以互相替换。 比如商场打折,有打五折,打八折,还有满300减50那种。策略是可以替换的。 是不是和工厂方法很类似。但是其实是有区别的。 比如,买车的时候,一个不懂车的人说,在哪里一比划,销售人员就让工厂生产什么车,这是工厂方法。如果一个行家来,说排气量什么什么,两厢车什么什么,发动机什么 什么,这就是策略模式。 具体步骤 要原创 2018-01-07 14:10:49 · 134 阅读 · 0 评论 -
外观模式
外观模式,这个模式主要是用来解耦的。他主要是降低两个子系统之间的关系。举个例子,我关电脑,开电脑,不需要让cpu开启,让硬盘开启,让显示器开启,关电脑的时候也是同样的。我就知道开和关就可以了。这样,我这个子系统和电脑这个子系统的关系就很简单了。 外观类 public class Facade { Cpu MyCpu = new Cpu(); Ssd MySsd = new原创 2018-01-07 14:49:02 · 162 阅读 · 0 评论 -
单例模式
单例模式 单例模式,就是只能生成一个例子。单例类只能有一个实例。他给其他对象提供的例子只能是这个实例。 单例模式有两种 懒汉式 饿汉式 public class Singleton { private Singleton() { } private static Singleton sing = null; Singleton getS原创 2018-01-07 19:11:43 · 136 阅读 · 0 评论 -
装饰模式
这个模式我理解了好一会儿,可能是我比较笨,我是照着别人代码敲了一遍才理解的。 这是被装饰者 public abstract class Humburger { protected String name; public String getName() { return name; } public abstract double getPr原创 2018-01-07 20:39:26 · 170 阅读 · 0 评论 -
外观模式
外观模式,这个模式主要是用来解耦的。他主要是降低两个子系统之间的关系。举个例子,我关电脑,开电脑,不需要让cpu开启,让硬盘开启,让显示器开启,关电脑的时候也是同样的。我就知道开和关就可以了。这样,我这个子系统和电脑这个子系统的关系就很简单了。 外观类 public class Facade { Cpu MyCpu = new Cpu(); Ssd MySsd = n原创 2018-01-08 18:19:25 · 135 阅读 · 0 评论