`
DynamicMan
  • 浏览: 25448 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
文章列表

备忘录模式

    博客分类:
  • ooad
备忘录模式:保存对象的某一时刻的状态,进行存储 优点:实现对象的回滚,可以对数据进行恢复和保存   标准类图:  主体类: public class Originator { private String state; public String getState() { return state; } public void setState(String state) { this.state = state; } public void restore(Memo memo){ this.setState(memo. ...

访问者模式

    博客分类:
  • ooad
访问者模式:将对象的变化(共享)和不变部分(不共享)进行分离,将变化部分交由具体的访问者执行,访问者可以根据具体的类进行动作 优点:封装不变部分,扩展变化部分,一般是在循环抽象对象时候,由访问者来对不同的具体对象进行操作   标准类图:  抽象元素: public interface Element { public void accept(Visitor visitor); }   具体元素: public class ConcreteElement1 implements Element{ @Override public void a ...

状态模式

    博客分类:
  • ooad
状态模式:一个对象的内部状态发生改变会引起行为的改变,此种变化会引起类的变化 优点:避免过多的if-else语句,扩展性良好,有很强的封装性   标注类图:   模拟电梯状态行为: 电梯类: public class Lift { public static final LiftOpenState OPEN_STATE = new LiftOpenState(); public static final LiftCloseState CLOSE_STATE = new LiftCloseState(); public static final LiftStopStat ...

享元模式

    博客分类:
  • ooad
享元模式:通过池技术,对细粒度对象提供共享支持 优点:节省对象创建时间,减少内存开支,降低性能消耗   标准类图:  抽象享元: public abstract class FlyWeight { protected String externalAttribute;//external attribute public FlyWeight(String externalAttribute) { super(); this.externalAttribute = externalAttribute; } protected abstrac ...

空对象模式

    博客分类:
  • ooad
空对象模式:使用对象继承来实现程序中的空判断 优点:增加程序可读性 空对象接口: public interface NullObject { boolean isNull(); }  原对象: public class Subject implements NullObject{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @ ...

门面模式

    博客分类:
  • ooad
门面模式:建立一个统一的对象对来提供子系统外部和内部的通讯方式,子系统外部只能通过此对象对子系统内部进行访问 优点:细节隐藏,高层调用不用关心底层实现,避免产生高度的耦合关系   标准类图:  子系统中的类: public class Class1 { public void foo4(){ System.out.println("foo4"); } public void foo5(){ System.out.println("foo5"); } public void foo6(){ ...

适配器模式

    博客分类:
  • ooad
适配器模式:改变遗留对象的抽象(接口),以匹配当前的环境,使得其能够正常的工作 优点:可以让两个没有任何关联的对象匹配在一起运行,而对用调用者来说是透明的,适配器是一种补救措施,在设计阶段一般不考虑。   标准类图:  目标接口: public interface TargetInterface { void targetMethod(); }  目标实现: public class Target implements TargetInterface{ @Override public void targetMethod() { System ...

观察者模式

    博客分类:
  • ooad
观察者模式:定义对象的一对多依赖关系,使得每当一个对象状态更改都会通知关联对象进行自动更新 优点:建立触发机制,观察者和被观察者分离,调用者不用关心具体的观察者行为   标准类图:  抽象主题: public abstract class Subject { private List<Observer> observers = new ArrayList<>(); public void addObserver(Observer observer){ this.observers.add(observer); } pu ...

策略模式

    博客分类:
  • ooad
策略模式:抽象一个算法,并封装不同的算法,使得不同算法之间可以相互切换。 优点:扩展性良好,不同算法之间可以自由切换,不需要冗余的if-else语句   标准类图:  抽象算法:   public interface Strategy { void algorithm(); }  具体算法:     public class ConcreteStrategy1 implements Strategy{ @Override public void algorithm() { System.out.println("这是算法1&q ...

中介者模式

    博客分类:
  • ooad
中介者模式:使用一个中介对象封装对象与其他对象之间的操作行为,使得原本产生交叉蜘蛛网状的对象关系变成星型关系 优点:降低对象与对象之间的耦合,满足迪米特法则   标准类图:   抽象中介者: public abstract class Mediator { protected ConcreteColleague1 concreteColleague1; protected ConcreteColleague2 concreteColleague2; public ConcreteColleague1 getConcreteColleague1() { re ...

责任链模式

    博客分类:
  • ooad
责任链模式:将请求封装成一个对象,使得多个对象都有机会对该对象进行处理,这些对象组成一条链状结构,请求延着链条进行传递。 优点:去除冗余的if-else语句,对请求的发出者和请求的接收者进行解耦,通过类间继承关系进行扩展   标准类图:   抽象处理者: public abstract class Handler { private Handler handler; public void setNext(Handler handler){ this.handler = handler; } public void handleRequest( ...

命令模式

    博客分类:
  • ooad
命令模式:将请求封装成一个命令,使用命令对象将请求的调用者和接收者进行分离,从而降低耦合性 优点:类间解耦,具有良好的扩展性   标准类图:  抽象接收者:   public interface Receiver { void doSomething(); }  具体接受者:     public class ConcreteReceiver implements Receiver { @Override public void doSomething() { System.out.println("do some thing& ...

装饰模式

    博客分类:
  • ooad
装饰模式:动态的给一个对象添加额外的职责 优点:以调用者透明的方式,动态的改变对象的行为 使得装饰对象和主题对象独立,降低耦合性   装饰模式跟静态代理模式方式非常类似,而关注点不同,装饰模式关注点是对对象行为的增强和减弱,可能会改变主题对象的默认行为,而静态代理模式只是对主题对象的访问控制,不会干预对象的默认行为。   标准类图:    

代理模式

    博客分类:
  • ooad
代理模式:使用代理对象对源对象进行访问控制 优点:  1.以调用者透明的方式,动态的改变对象的行为 2.主题对象不会改变,高扩展性,需要产生新的行为通过建立代理对象进行 3.职责明确,不同的代理类进行不同职责的代理,又跟主题对象进行了严格的区别   标准类图:  静态代理:  抽象主题类: public interface Subject { public void doSomething(); }  具体主题类: public class ConcreteSubject implements Subject{ @Override publ ...

模板方法模式

    博客分类:
  • ooad
模板方式模式:由父类定义一个算法的骨架,而让具体某些步骤延迟到子类进行实现 模板方法优点: 1.封装不变的部分,扩展变化的部分 2.提取公共部分代码,便于维护 3.行为由父类控制,子类实现   标准类图:  定义抽象类(抽象类中定义模板方法和基础方法,基础方式由子类进行实现): public abstract class Hummer { protected abstract void start(); protected abstract void engineBoom(); protected abstract void alarm(); ...
Global site tag (gtag.js) - Google Analytics