设计模式
文章平均质量分 66
this.
这个作者很懒,什么都没留下…
展开
-
单例模式——皇帝XXX
秦王嬴政统一中国,认为自己“德兼三皇、功盖五帝”,创“皇帝”一词作为华夏最高统治者的正式称号。自此“皇帝”这个称号沿袭了两千多年。皇帝每天的任务是接待众多的臣子,而众多臣子每天我面对同一个皇帝。臣子们一提到皇帝,便知道是指谁了。因为皇帝只有一个嘛! 那么我们怎么在程序中把这种现象体现出来呢?没错,单例模式!那来看看具体怎么实现的吧:皇帝类:public class Emperor { pr原创 2016-03-30 13:42:13 · 1429 阅读 · 0 评论 -
简单工厂模式——加减乘除
还记得刚入门C语言的时候经常要写一些加加减减的程序来练练手。好吧,既然学了新语言,那就用新语言来写个简单的计算器吧!public class Calculator { public static void main(String[] args) { int a,b; Scanner scanner = new Scanner(System.in);原创 2016-04-01 00:01:52 · 5962 阅读 · 0 评论 -
原型模式——文档复制
文档是我们在计算机上记录文字等一个工具,通常一份文档有一个大标题,也有许多个副标题。文档的复制拷贝也很常见,那么怎么在程序设计中运用原型模式来模拟文档的复制呢? 首先,通过UML图大概了解一下原型模式吧: Client:客户端类 Prototype:抽象类或接口,实现了Cloneable接口 ConcretePrototype:具体的原型类 既然需要模拟文档复制,那么就需要先建立原创 2016-09-10 00:13:24 · 449 阅读 · 0 评论 -
策略模式——商品促销
许多商家为了提高知名度或是其他原因会进行商品促销活动。而有时对于新老客户的促销策略又有所不同。比如新客户打9折,老客户打8折。(当然,这只是比喻)我们可以用简单的程序来表示这种促销活动。public class Merchandise { //新客户 public final static int NEW_CUSTOMER = 0; //老客户 public fina原创 2016-09-10 14:43:40 · 1188 阅读 · 0 评论 -
责任链模式——事务处理
假设有这么一个场景,学生们有个问题,需要去处理。有大多数情况下学生个人就能搞定这个通知,如果不行就让班长帮忙。班长也无能无力的时候就可以去找到辅导员,最终解决学生的问题。这中间就形成了一个职责链,当前级别无法处理问题时,就往上交付,知道解决为止。在程序中也可以通过责任链模式来把上述的场景展现出来。 UML图: 具体的代码实现如下:/***代表职务或者是请求(问题)的等级*/public原创 2016-09-12 10:16:37 · 1332 阅读 · 0 评论 -
代理模式——游戏代练
相信大多数年轻人都喜欢玩游戏。当然笔者也不例外,曾经还有一段时间玩游戏玩到废寝忘食呀。可惜,终究是手残党,游戏怎么都玩不厉害。正是玩游戏的人很多,所以就出现了代练这个职业,把游戏交给代练的人,就能轻松的把游戏玩到一个更高的阶段。这是生活中的一种代理。 而在程序设计中,我们就与生活相结合,来用代练描述一下程序设计中的代理模式。 UML图: 首先,先创建一个接口,这个接口代表着所有的玩家共有的原创 2016-08-24 18:43:15 · 1631 阅读 · 0 评论 -
Builder模式——组装电脑
又是一个开学季,新生们都纷纷入学了。上了大学,买电脑便是每位学生要考虑的事情,作为计算机学院的一员,自然想买配置高点的电脑用来编码,这样会使用得舒服很多。可是手头又紧,想买配置好的电脑有时就会考虑自己去组装电脑。 那么,在这里就用Builer(建造者)模式来描述一下组装电脑这件事。先贴个UML图: 首先,需要一个抽象类——电脑:public abstract class Computer {原创 2016-09-06 21:25:59 · 1468 阅读 · 0 评论 -
观察者模式
最近在学习使用RxJava的时候,了解到其功能的强大,可以简化很多的代码,让逻辑更清晰。其中,RxJava内部实现则用了观察者模式来实现。因此,在深入学习RxJava前就先把观察者模式理清楚先。 观察者模式中首先有两个角色,一个是被观察者(Subject),另一个是观察者(Observer)。顾名思义,观察者可以通过被观察者的动作来做出反应。举个例子,公司老板发布通知,是被观察者,而员工们是通知接原创 2016-10-15 15:01:46 · 356 阅读 · 0 评论 -
模板方法模式
有些时间没有更新技术博客了,上段时间都在忙考试。 这次继续学习新的设计模式————模板方法模式。依旧先从一个UML图开始: 其中: AbsTmplate:定义了逻辑的框架 ConcreteImplA:具体实现A ConcreteImplB:具体实现B举个例子,现有几部电脑,每部电脑的操作系统不相同,但是每部电脑的开机流程都相同。比如打开电源,装载系统,登录系统。 首先,就原创 2017-01-22 11:59:49 · 308 阅读 · 0 评论