![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 68
喜码拉雅
追求卓越,成功自然到来。
展开
-
设计模式之策略模式
同样地,个人理解,如有错误或说的不明白的地方,请一定不吝指出,不胜感激。 首先我们明确一下概念,然后会列一个例子;如果概念不明白的同学可以先看例子,然后回味概念。 1.概念 策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 2.例子 产品经理安排大白设计一个游戏,这个游戏包括如下角色:国王、王后、巨怪以及骑士。每个人都有自己的武器,国王...原创 2018-07-24 19:43:40 · 152 阅读 · 0 评论 -
设计模式之简单工厂
在介绍工厂模式之前,首先我们要知道,为什么要使用工厂模式?比如说消费者要买一个面包,消费者只关心面包好不好吃、日期新不新鲜等等,至于面包的生产工艺、原材料等,消费者并不关心。简而言之,消费者关注的是面包本身,并不关心面包的生产过程。于是,我们可以将生产面包和消费面包分离开来,只提供给消费者得到面包的接口,这样,最大程度地实现了解耦。好了,下面我们来实现一个简单工厂的例子,就拿我们消费者买面包的例子...原创 2018-07-13 12:18:06 · 120 阅读 · 0 评论 -
设计模式之工厂方法
上篇我们提到了为了更好地解耦,我们引入了简单工厂设计模式。但是简单工厂模式还存在问题,就是一个工厂不是万能的,我们不能要求一个工厂既生产这个,又生产那个。为解决这个问题,我们来学习一下工厂方法设计模式。简单地说,工厂方法就是把生产不同品牌的工厂分离开来,一个工厂专注于生产一个品牌,生活化些,就是我们不能要求一个鞋厂既生产耐克,又生产阿迪达斯,耐克和阿迪达斯应该是两个分开的工厂。好的,下面我们来写代...原创 2018-07-13 13:35:48 · 167 阅读 · 0 评论 -
设计模式之抽象工厂
之前我们有提到,简单工厂存在工厂间耦合性太强的问题;工厂方法存在客户端代码复杂的问题。这两种设计模式都不够完美,因此出现了我们今天要介绍的抽象工厂设计模式。 好了,下面我们来写代码体验一下抽象工厂: 还是用之前我们用的面包类作为例子: public interface Bread { void eat(); } //此处的DanXiang为面包品牌 public class D...原创 2018-07-13 14:22:55 · 116 阅读 · 0 评论 -
设计模式之正确实现单例模式
单例模式是非常好理解的一个类,它的设计目标也非常简单:保持一个类仅有一个实例。 1.最普通的单例模式(不完美) 下面我们实现一个最简单的单例模式: public class Singleton { public static Singleton instance = new Singleton(); private Singleton(){} public stat...原创 2018-07-13 21:28:31 · 141 阅读 · 0 评论 -
设计模式之观察者模式
个人理解,如有错误,请大家指出,感谢! 1.什么是观察者模式? 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 比如说,我们要设计一个气象站的显示牌,当气温、湿度等改变了,就更新显示牌。一种做法是,所有显示牌轮询气象数据,当气象数据与上次轮询得到的数据不一致时,就更新显示牌,这是一种很糟糕的做法,浪费了我们的资源(至少浪费了CPU...原创 2018-07-25 19:30:12 · 104 阅读 · 0 评论 -
设计模式之装饰者模式
个人理解,如有错误,请大家指正,谢谢。 什么是装饰者模式? 定义:装饰着模式动态地将责任附加到对象上,若要扩展功能,装饰着提供了比继承更有弹性的替代方案。 怎么理解呢?比如说,我们想建立一个洋娃娃类,娃娃可以穿衣服、裤子、裙子、以及同时穿裤子和衣服...... 有几种实现方案: version1: 娃娃作为父类,芭比娃娃作为子类,芭比娃娃的子类有:穿衣服的芭比娃娃、穿裤子的芭比娃娃、穿...原创 2018-07-26 17:54:31 · 212 阅读 · 0 评论 -
面向对象设计原则
先占个坑,一边学习一边更新。 1.依赖倒置原则:要依赖抽象,不要依赖具体类。 举个例子吧: 假如我们要设计一个购物车,购物车用来装各种水果(苹果、香蕉等) 那么如果不依赖抽象,我们的代码看起来就是这个样子的: 苹果类: public class Apple { private int price; public String getName() { ...原创 2018-08-14 20:19:20 · 90 阅读 · 0 评论 -
设计模式之模板方法
个人理解,如有错误,还请大家指出。 你开了一家饮料店,出售茶和咖啡。 一个顾客走进了店里,要了一杯茶。 泡茶需要四个步骤:烧水、泡茶叶、将茶倒入杯中、加一滴柠檬汁 你开始泡茶: public class Tea { public void allStepToMakeTea() { boilWater(); makeTea(); p...原创 2018-08-19 09:57:12 · 187 阅读 · 0 评论