![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
成分sjz
路漫漫
展开
-
设计模式---状态模式
public class GumballMachine { final static int SOLD_OUT = 0; final static int NO_QUARTER = 1; final static int HAS_QUARTER = 2; final static int SOLD = 3; ...原创 2018-06-11 22:05:55 · 101 阅读 · 0 评论 -
设计模式---模板方法模式
模板方法模式(TEMPLATE METHOD),用于定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,属于类行为型模式。模板方法模式是结构最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个称...原创 2018-06-10 19:25:23 · 94 阅读 · 0 评论 -
并发编程----对象的组合
4.转载地址https://blog.csdn.net/ahaha413525642/article/details/766170191 设计线程安全的类在设计线程安全类的过程中,需要包含下面三个基本要素 ①找出构成对象状态的所有量 ②找出约束状态变量的不变性条件 ③建立对象状态的并发访问管理策略要访问对象的状态,首先从对象的域开始。如果对象中所有的域都是基本类型的变量,那么这些域将构成对象的...转载 2018-06-16 21:08:00 · 224 阅读 · 0 评论 -
设计模式---适配器模式和外观模式
适配器模式(Adapter)适配器(adapter-pattern):将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不兼容的类可以合作无间。两种形式:对象适配器(组合)类适配器(多重继承):在Java中不能实现外观(facade-pattern):提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。原则 最少知识原则:只和你的密友...原创 2018-06-09 14:13:39 · 143 阅读 · 0 评论 -
设计模式---单件模式
单件模式确保一个类只有一个实例,并提供一个全局访问点。有一些对象我们只需要一个,比方说:线程池、缓存、对话框、处理器偏好设置和注册表的对象等等。事实上,这类对象只能有一个实例,如果制造出多个实例,就会导致许多问题产生,例如:程序的行为异常、资源使用过量,或者是不一致的结果。使用静态变量如何确保这些类只存在一个实例?利用java的静态变量可以做到,但使用静态变量有个缺点:如果将对象赋值给一个全局...原创 2018-06-07 19:46:45 · 88 阅读 · 0 评论 -
设计模式---命令模式
Command: 定义命令的接口,声明执行的方法。ConcreteCommand: 具体的命令, 实现命令接口;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。Receiver: 接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求实现的相应功能。Invoker: 要求命令对象执行请求,通常会持有命令对...原创 2018-06-07 23:56:09 · 100 阅读 · 0 评论 -
设计模式---工厂模式
工厂模式:当代码中有很多具体类的创建,可能就有问题。像下面这段代码,就有很多实例创建,当哪天需要修改,就要改动源码。这对代码的维护和更新代价较大。Duck duck; if (pinic) { duck = new MallardDuck(); } else if (hunting) { duck = new DecoyDuck(); } else if (inBathTub) { d...原创 2018-06-06 20:43:55 · 134 阅读 · 0 评论 -
设计模式---装饰者模式
这样的订单系统没有办法考虑到咖啡调料的部分,把加入不同调料的咖啡看做不同的类会导致类爆炸(每个类的cost方法计算出咖啡加调料的价钱):很明显,这样的系统难以维护,一旦牛奶的价钱上扬或新增一种焦糖调料,系统将难以改变。采用实例变量和继承的设计也许能解决一些问题:Beverage作为一个饮料类,加上实例变量代表是否加入了饮料。然而当用户想要双倍摩卡咖啡时,这样的系统就显得有些无所适从。对于冰茶,...原创 2018-06-06 13:21:14 · 111 阅读 · 0 评论 -
设计模式---观察者模式
为什么观察者模式会出现呢?为了建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展,这就是为什么需要观察者模式。观察者模式(Observer Pattern):定义了对象之间的一种...原创 2018-06-05 23:24:55 · 91 阅读 · 0 评论 -
设计模式----策略设计模式
什么是策略模式: 策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。让鸭子能飞去年,公司的竞争力加剧,公司主管认为该是创新的时候了。主管认为,此模拟程序需要会飞的鸭子,将竞争者抛在后面。改变duck会叫不能飞的鸭子也飞起来。我们要使用其他方法。 改进继承Joe认识到继承可能不是一个好的解决办法,因为他刚刚拿到来自主管的备忘录,希望以后每六个月更...原创 2018-06-04 23:11:00 · 151 阅读 · 0 评论 -
设计模式---迭代器与组合模式
迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。这个模式提供了一种方法,可以顺序访问一个聚合对象中的元素,而不用知道内部怎么表示的。为了更好的理解迭代器模式,我们举个例子。下面使用head first设计模式中的例子,使用迭代器模式来演示早餐和晚餐菜单的显示。由于早餐和晚餐其数据结构不同,由于早餐店和晚餐店需要合并,所以需要一个统一的菜单:即菜单项结构相同。下面...原创 2018-06-10 21:48:01 · 201 阅读 · 0 评论