设计模式
best_冰河世纪
共同学习,共同进步。
展开
-
GOF——策略模式
if..else不好维护时使用策略模式替换interface Straggle { double price(double price);}class OldStraggly implements Straggle { @Override public double price(double price) { return price * 0.9...原创 2018-12-26 14:47:43 · 128 阅读 · 0 评论 -
GOF——工厂模式
用工厂方法代替new操作的一种模式,包括简单工厂,工厂方法,抽象工厂interface Car { void run();}class BaoMa implements Car { @Override public void run() { System.out.println("宝马"); }}class BenChi impl...原创 2018-12-25 13:57:05 · 286 阅读 · 0 评论 -
GOF——建造者模式
将复杂的类, 拆分成简单的类,进行创建./** * 建造者模式 */public class Builder { public static void main(String[] args) { HumanDirector director = new SmartHumanDirector(); Human human = director.cr...原创 2018-12-25 14:14:02 · 174 阅读 · 0 评论 -
GOF——原型模式
在已有对象的基础上,复制该对象的属性.new一个对象需要非常繁琐的数据准备时,使用原型模式,更加快速./** * 浅复制--修改老对象属性新对象也会变 */class Person implements Cloneable,Serializable { private String name; private Date age; public Person...原创 2018-12-25 14:58:46 · 213 阅读 · 0 评论 -
GOF——适配器模式
将一个类的接口转换成另外一个需要的接口/** * 适配器模式 */interface Target { void handleReq();}/** * 被适配类 */class Adapted { public void request() { System.out.println("Adapted-->request"); }...原创 2018-12-26 08:45:45 · 223 阅读 · 0 评论 -
GOF——装饰器模式
动态的为对象添加新的功能interface ICar { void move();}class TCar implements ICar { @Override public void move() { System.out.println("TCar"); }}class SuperCar implements ICar {...原创 2018-12-26 08:52:15 · 212 阅读 · 0 评论 -
GOF——代理模式
将重复的工作交给代理对象去做,其他的原对象去做.包括静态代理,动态代理interface Start { void sing(); void collectMoney();}/** * 被代理类 */class RealStart implements Start { @Override public void sing() { ...原创 2018-12-26 09:04:19 · 156 阅读 · 0 评论 -
GOF——外观模式
功能封装,尽可能少的与类打交道class A { @Override public String toString() { return "A"; }}class B { @Override public String toString() { return "B"; }}/** * 外观模式...原创 2018-12-26 09:09:47 · 150 阅读 · 0 评论 -
GOF——桥接模式
多维度分解对象,将继承变为关联abstract class Computer { public abstract void type();}interface Brand { void sale();}class Desktop extends Computer { private Brand brand; public Desktop(Bra...原创 2018-12-26 09:22:00 · 154 阅读 · 0 评论 -
GOF——组合模式
主要处理树形结构,内部存在天然的递归.interface AbstractFile { void killVirus();}class ImageFile implements AbstractFile { private String fileName; public ImageFile(String fileName) { this.f...原创 2018-12-26 09:45:44 · 219 阅读 · 0 评论 -
GOF——单例模式
一个类只存在一个实例化对象。分为懒汉式和饿汉式,懒汉式,懒加载只有需要的时候才会创建实例。饿汉式,当类被第一次调用时,就会创建实例。当占用资源少,不需要延时加载时,可采用枚举创建单例,好于饿汉式。当占用资源大,需要延时加载时,可采用静态内部类创建,好于懒汉式。 由于双重检测锁存在问题,不在进行总结。 /** * 饿汉式--没有延时加载,不使用也会加载,浪费资源 *...原创 2018-12-25 13:39:50 · 208 阅读 · 0 评论 -
GOF——23种设计模式总结
创建型模式 单例模式 工厂模式 建造者模式 原型模式 结构型模式 适配器模式 装饰器模式 代理模式 外观模式 桥接模式 组合模式 享元模式 行为型模式 策略模式 模板方法模式 观察者模式 迭代模式 ...原创 2018-12-26 08:33:28 · 159 阅读 · 0 评论 -
GOF——模板方法模式
创建抽象类,将模板中不同的方法抽象出来,在不得子类中实现.abstract class Template { public void takeNumber() { System.out.println("排队取号"); } public abstract void transact(); public void evaluate() {...原创 2018-12-26 14:53:52 · 326 阅读 · 0 评论 -
GOF——观察者模式
被观察者对象状态发生改变时,观察者对象都能收到通知.interface Observers { void updateMethod(Announcer announcer);}class Father implements Observers { private int status; public int getStatus() { ret...原创 2019-01-14 09:03:30 · 197 阅读 · 0 评论 -
GOF——迭代器模式
JDK内置迭代器类似.主要用于遍历对象interface MyIterator { boolean isFirst(); boolean isLast(); void first(); Object next(); boolean hasNext();}class ConcreteMyAggregate { private Li...原创 2019-01-14 09:03:43 · 169 阅读 · 0 评论 -
GOF——责任链模式
职责链上的处理者负责处理请求,请求只需要发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。/** * 请假类 */class Leave { private String name; private Integer days; public Leave(String name, Integer days) ...原创 2019-01-14 09:03:53 · 129 阅读 · 0 评论 -
GOF——命令模式
/** * 真正的命令执行者 */class Receiver { public void action() { System.out.println("Receiver-->action"); }}interface Common { void execute();}class ConcreteCommand implements...原创 2019-01-14 09:04:03 · 234 阅读 · 0 评论 -
GOF——状态模式
对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为interface Status { void method();}class FreeStatus implements Status { @Override public void method() { System.out.println("空闲状态"); ...原创 2019-01-14 09:04:12 · 364 阅读 · 0 评论 -
GOF——中介者模式
当类过多且他们之间的关系过于复杂时,引入中介者类,是这些类达到解耦.interface Mediate { void getOut(String str); void getIn(String str); void set(String str, Department department);}class GeneralManager implements...原创 2019-01-14 09:04:23 · 210 阅读 · 0 评论 -
GOF——享元模式
主要用于减少创建对/** * 外部状态 */class Coordinate { private int x, y; public Coordinate(int x, int y) { this.x = x; this.y = y; } @Override public String toString() {...原创 2018-12-26 09:50:54 · 161 阅读 · 0 评论