随笔分类 - 设计模式
摘要:今天介绍一种模式:职责链模式。 正如它的名字,职责链,这是一种链状的结构,在大概学习了它的理念之后我感觉这个设计模式特别类似于数据结构中的单链表。 先看这个模式的UML类图: 处理请示接口: public abstract class Handler { //继任者 protected Handle
阅读全文
摘要:外面饭馆大致有这样的形式:路边摊和店面餐馆。 不难发现如果路边摊生意火热的话可能有很多顾客围在厨师身边,这样很容易出现错误,因为耦合度太高了,厨师和每位顾客都耦合在一起。 而店面则会有服务员,服务员负责记录顾客想要点的菜品,如果顾客想修改的话只要在菜单上划掉就可以了,出错率很小。 这也就对应了一个设
阅读全文
摘要:目前市面上有很多的手机品牌,不同的手机品牌可能会有不同的操作系统,比如现如今的安卓系统和IOS系统,在安卓系统可以运行的软件在IOS操作系统无法运行,而在IOS系统可以运行的软件在安卓系统也无法运行,这就要求厂家必须按照安卓操作系统和IOS操作系统开发APP,安卓开发一份,IOS开发一份,这从一定程
阅读全文
摘要:今天来介绍一种新的设计模式:组合模式。 当我们想要实现有层次的结构,比如公司结构,或者学校结构等,它们的层次结构很像数据结构的树,今天介绍的这个设计模式也就是实现这个数据结构的。 模板: 接口: /** * @author 陈柏宇 * 组合模式,适合有层次的结构使用,典型的树形结构。 */ publ
阅读全文
摘要:上个世纪九十年代实行计划生育,我差点成了牺牲品(不开玩笑),郭嘉之所以实行计划生育是因为当时人口爆炸式增长,郭嘉害怕这种增长导致资源短缺。 这里用到对象也是成立的,比如说一个桌面应用的工具栏窗口,如果点击一次出现一个工具栏,用户多次点击的话就会出现很多个工具栏,会造成资源的浪费。 所以这里就要运用一
阅读全文
摘要:今天来介绍一种新的设计模式:适配器模式。 我先来举个例子:一个不懂英文的中国人去美国,和当地人交流基本上只能靠比划了,这个时候就需要一个翻译(适配器),中国人说中文,然后被翻译翻译为英语。 这样美国人就可以听明白我们在说什么了。 这里的翻译就是适配器,这里的中国人就是被适配的类,美国人不支持中国人这
阅读全文
摘要:今天来介绍一个新的设计模式 状态模式。 如果我要你写一个关于工作的程序你会怎么写呢?具体要求如下: 9-12点,早上,状态是精力充沛。 12-13点,中午,吃饭。 13-17点,傍晚,状态一般。 一般来说17点下班,但是有可能当天工作繁重要求加班。 加班的话:17-21点,晚上,疲累至极。 21点往
阅读全文
摘要:今天我们来介绍一种新的设计模式 抽象工厂模式。 大家可以复习一下之前学过的简单工厂模式和工厂方法模式:简单工厂模式 工厂方法模式 为了让大家理解的更加深刻,我先来举一个例子: 我们要帮一个公司写一个连接数据库以及配置操作的程序,这个公司一开始用的Oracel,后来又用了mysql,之后为了省钱干脆用
阅读全文
摘要:/** * @author 陈柏宇 * 观察者模式: * 定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 * 这个主题在状态发生改变时,会通知所有观察者对象,让他们能够自动更新自己 * * 观察者模式的动机: * 将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需
阅读全文
摘要:为了介绍这个模式,我来举一个例子:KFC与大排档。 比如说香辣鸡腿堡,北京KFC的香辣鸡腿堡和南京的香辣鸡腿堡味道是差不多的,就算有差别差别也不会太大。 而大排档买的豆腐脑可能就不一样了,可能北方卖的豆腐脑是咸的,南方卖的豆腐脑是甜的,或者说这家卖的豆腐脑里面加酱油,那家豆腐脑里面加陈醋。 也就是说
阅读全文
摘要:迪米特法则: /** * @author 陈柏宇 * 迪米特法则,又称最少知识原则 * 如果两个类不必直接通信,那么这两个类就不应当直接发生直接的相互作用。 * 如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。 * * 迪米特法则首先强调的前提是在类的结构设计上,每一个
阅读全文
摘要:/** * @author 陈柏宇 * 这个设计模式适合在这样的场景下使用: * 我们想输出一个相同问题的不同答案,那么这个时候只要答案不同就可以了,题目都是相同的 * 所以我们就可以写一个父类,让这个父类在模板方法里写出题干,父类的抽象方法则是子类要去实现的功能 * * 那么我们既然已经使用了继承
阅读全文
摘要:/** * @author 陈柏宇 * 原型模式 * 介绍 : 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 * * 举个例子,我们定义了一个类,类里面有具体的信息 * 如果客户端有新建 20 个相同对象的需求,那么我们岂不是要实例化 20 个对象 * 而且如果一个对象原型的数据出
阅读全文
摘要:之前我们提到过简单工厂模式 戳这里 >设计模式 简单工厂模式 今天来介绍一个和简单工厂模式很像的设计模式 : 工厂方法模式 先看UML类图: 再来看看代码: 这是产品类~ package template; /** * @author 陈柏宇 * 工厂方法模式生产的抽象产品父类以及它的具体产品子类
阅读全文
摘要:今天来介绍一种相对简单的设计模式 代理模式 比如说你想追一位女生,但是你跟她不熟,就可以找一个你和她都很熟的Proxy(代理)去完成你想要进行的动作 不要想歪哦,我说的是送礼物之类的 (doge) 我们首先来看这个设计模式的类图 是不是很简单哇~ 看看代码~ package proxy.templa
阅读全文
摘要:1 package decoration; 2 3 /**@author cby 4 * 装饰模式模板 5 * 装饰模式: 6 * 动态地给一个对象添加一些额外的职责,就增强功能来说,装饰模式比生成子类更为灵活 7 * 8 * 总结:一个非常巧妙的设计模式,正如它的名字:装饰模式 9 * 我们在穿一
阅读全文
摘要:/** * @author : 陈柏宇 * * 在介绍依赖倒转原则之前请容我举个例子 * 现在市面上绝大部分的CPU都是因特尔,AMD等公司制作的 * 差不多都属于垄断技术了 * 一块小小的CPU为什么就那么难以制作呢? * 因为CPU和计算机主板交互非常简单,目前主流的是接口为针脚式、触点式等 *
阅读全文
摘要:/** * @author : 陈柏宇 * 开放封闭原则 * * 介绍: * 开放封闭原则:软件实体(类、模块、函数等等) 应该可以扩展。但是不可以修改。 * * * 这个原则有两个特征: * ① 对于扩展是开放的 * ② 对于更改是封闭的 * * 我们在开发任何软件的时候都不要指望一开始的需求就确
阅读全文
摘要:这里主要就是文字叙述啦,对于设计模式的原则不太好举例hhh(主要我太菜) 所以大多都是文字叙述 /** * * @author : cby * * 这里主要就是文字描述啦 * * 单一职责原则 : 就一个类而言, 应该仅有一个引起它变化的原因,降低类内部功能的耦合性 * * 比如我们在写一个应用程序
阅读全文
摘要:/** * 总结: * 策略模式和简单工厂模式是很相似的,对于抽象父类和具体子类那里和简单工厂是一回事 * 不过下面还多添加了一个Context类,用来调用算法接口 * 来说说简单工厂和策略模式的区别: * 简单工厂是生产对象来调用对象的方法,在主函数中用简单工厂生产对象调用方法 * 而策略模式是在
阅读全文

浙公网安备 33010602011771号