随笔分类 - 设计模式
摘要:生活中我们往往需要电源适配器用来转换电压功率,用来给不同的设备供电。 那么在程序中,如果我们有一个实现了A接口的类,如何给需要B接口的方法供电(作为参数传递)呢? 假如我们有一个实现了Callable接口的任务类: public class Task implements Callable { @O
阅读全文
摘要:有一些较为复杂的对象,创建他们可能需要很多步骤,比如在一些RPG游戏中创建一个角色,我们通常需要选取职业,性别,种族,面部特征,体格等元素,如果把一个游戏中的角色设计成一个对象的话,我们要如何创建出这个复杂的对象呢? 比较好的方法是建造者模式。 复杂对象的创建和表示分离: 如何使用建造者模式: 在建
阅读全文
摘要:在开发中常常会遇到需要产生两个一模一样的对象的情况,这个时候原型模式就可以派上用场。原型模式就是通过拷贝原型对象来产生产生新对象的一种创建型模式。 通用的原型模式 可以通过直接将原型的属性值赋值给新对象,从而产生一个一模一样的对象。 public class Dog { private String
阅读全文
摘要:再上一篇博客中谈到了工厂方法模式,它能将对象的创建和产品分离,同时还符合开闭原则,看起来很完美,那么它有缺陷吗? 还是接着我们的登录功能来看,在我们的系统中登录通常伴随着三张表:用户表,角色表,权限表。 那么当我们使用登录功能的时候,可能会用到三种dao:UserDao,RoleDao,Permis
阅读全文
摘要:简单工厂的问题 昨天写了简单工厂模式,简单工厂模式虽然做到了对象的创建和使用分离,但是它有个致命的缺陷:不符合开闭原则。每当我们需要新加一个实现类的时候,我们不得不修改工厂的创建方法。 所以现在看来简单工厂模式的工厂责任还是太重,每种实现类都需要由这个工厂来创建,所以每增加一个产品的实现,都需要修改
阅读全文
摘要:为什么要用工厂? 用工厂的主要目的是把对象的创建和使用分离,这比较符合单一职责原则,工厂负责创建产品,调用者负责使用产品,如果调用者既需要负责创建产品又需要负责使用产品,那么耦合性会比较高。 以一个常见的登录功能为例: class HibernateUserDao { public void get
阅读全文
摘要:常常看到一些大佬说,写代码不要写一堆if else嵌套,不要一个方法写上百行,这样不优雅,那么什么样的代码是优雅的代码呢? 优雅的代码首先想到的是可读性高,我们看别人的代码时往往希望对方写得简洁易读,而不是一个方法写了上百行甚至几百行,一眼看过去就劝退了。 容易维护,如果把所有的代码都写在一个方法里
阅读全文
摘要:在编码中单例是很常用的设计模式,通常我们使用的Spring创建的Bean就是默认单例的,这是一个常用又重要的模式。 单例模式是一个创建型的设计模式,它保证程序进程中只有一个实例被创建,所以很容易想到,这个类的构造器必须是private的。 饿汉式单例 最简单的单例模式是饿汉式单例,它的代码如下: p
阅读全文

浙公网安备 33010602011771号