设计模式
戴boy
菜鸟,求学中~~~
展开
-
单例模式
注意点单例类只能有一个实例单例类必须自己创建自己的唯一实例单例类必须给所有其他对象提供这一实例优点在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例避免对资源的多重占用缺点没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化懒汉、线程不安全(不支持线程安全)描述: 这种方式是最基本的实现方式,这种实现最大的问题就是不支持多原创 2017-08-09 11:09:10 · 204 阅读 · 0 评论 -
工厂模式和抽象工厂模式
工厂模式分三类简单工厂模式(Simple Factory) 一个总工厂,想要什么,生产什么工厂方法模式(Factory Method) 总工厂分出多个子工厂,想要什么,要指定总工厂的某个子工厂生产什么抽象工厂模式(Abstract Factory) 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象区别工厂方法模式 一个抽象产品类,可以派生出多个具体产品类原创 2017-08-09 15:45:27 · 183 阅读 · 0 评论 -
观察者模式
理解对象间的一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于他的对象得到通知并被自动更新主要解决一个对象状态改变给其他对象通知的问题,要考虑到易用和低耦合,保证高度的协作如何解决使用面向对象技术,弱化依赖优点观察者和被观察者是抽象耦合的建立一套触发机制缺点如果一个被观察者对象有很多直接或间接的观察者,要全部都通知到,会花费很多的时间如果在观察者和观察目标之间有循环依赖,原创 2017-11-14 16:56:57 · 192 阅读 · 0 评论 -
适配器模式
目的将一个类的接口转换成客户希望的另一个接口。适配器模式是作为两个不兼容的接口之间的桥梁。优点可以让任何两个没有关联的类一起运行提高了类的复用增加了类的透明度灵活性好缺点过多的使用适配器,会让系统非常凌乱,不易整体把握。如果不是很有必要,可以不使用适配器,而是直接对系统进行重构由于java只能继承一个类,所以至多只能适配一个适配者类,而且目标必须是抽象类 注意事项适配器不是在详原创 2017-11-15 11:27:39 · 242 阅读 · 0 评论 -
建造者模式
定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示优点建造者独立,易扩展便于控制细节风险缺点产品必须有共同点,范围有限制内部变化复杂,会有很多的建造类注意点与工厂模式相比较,建造模式更加关注与零件装配的顺序第一步创建 Person 类public class Person { private String name; private原创 2017-11-15 14:41:59 · 154 阅读 · 0 评论 -
策略模式
策略模式定义定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换优点算法可以自由切换避免使用多重条件判断扩展性良好缺点策略类会增多所有策略类都需要对外暴露注意项如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题第一步方法接口(AllMethod.java)public interface AllMethod { public int原创 2017-11-20 16:07:36 · 263 阅读 · 0 评论 -
原型模式
定义用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象优点性能提高避免构造函数的约束缺点配备克隆方法,需要对类的功能进行通盘考虑必须继承Cloneable接口避免构造函数的约束注意事项原型模式是通过拷贝一个现有对象生成新对象的。浅拷贝实现Cloneable,重写,深拷贝是通过实现Serializable读取二进制流第一步(最简单的)public class Per原创 2017-11-16 10:48:11 · 135 阅读 · 0 评论 -
模板模式
定义一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行优点封装不变部分,扩展可变部分提取公共代码,便于维护行为由父类控制,子类实现缺点每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大第一步创建一个抽象类,它的模板方法被设置为 final (Game.java)public abstract cla原创 2017-11-23 10:30:02 · 130 阅读 · 0 评论