![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模式
文章平均质量分 54
iteye_10829
这个作者很懒,什么都没留下…
展开
-
设计模式之命令模式(Command)
命令模式:将“请求/命令”封装成对象,无需了解这个请求的执行者以及处理细节。 谁来执行和处理这个命令对于命令的发号者来说并不关心,发号命令者只管发号施令而不关注执行者以及执行细节,而命令的执行者只管执行命令而不关注命令是由谁来发号的。命令模式能将发号施令者与命令的执行者解耦。他们只需要关注于命令对象。命令模式可能会产生额外的很多的子类,给系统增加复杂性。 命令模式UML图:...原创 2011-12-07 23:55:48 · 176 阅读 · 0 评论 -
设计模式之工厂模式(Factory)
简单工厂:简单工厂其实不是一个设计模式,反而比较像是一种编程习惯。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂UML图简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建...原创 2011-11-28 23:06:43 · 104 阅读 · 0 评论 -
设计模式之装饰者模式(Decorator)
装饰者模式:动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 装饰者模式类图装饰者模式的关键点装饰者与被装饰者必须是一样的类型,即他们有同样的超类型。 ConcreteComponentA想要装饰ConcreteComponentB及其子类,ConcreteComponentA中必须有一个ConcreteComponentB的引...原创 2011-11-27 23:39:14 · 97 阅读 · 0 评论 -
设计模式之观察者模式(Observer)
观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖着都会收到通知并自动更新。 基于“推”的观察者类图 基于“推”的Java事件监听器的观察者模式应用 当两个对象之间松耦合,它们依然可以交互,但是不太清楚彼此的细节。观察者模式提供了一种对象设计,让主题和观察者之间实现松耦合。主题只知道观察者实现了某个接口(Observ...原创 2011-11-27 20:44:14 · 134 阅读 · 0 评论 -
OO设计中的一点心得
一个良好的OO设计必须具备可复用性、可扩展性、可维护性。 什么样的设计才是一个可复用性比较高的设计?高内聚。我们把散落到各地的重复代码,都扫到一起,把他封装起来,通过职责的划分,将他们归类。单一职责的设计原则是实现高内聚的方法之一。 什么样的设计才是一个可扩展性比较高的设计?低耦合。依赖接口不要依赖实现,依赖抽象不要依赖具体,最少依赖原则(只依赖第三者)等设计原...原创 2011-11-27 16:08:02 · 162 阅读 · 0 评论 -
设计模式之策略模式(Strategy)
策略模式:定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 策略模式类图:策略模式与设计原则:封装变化把会变化的部分取出来并封装起来,以便以后可以轻易的改动或者扩展此部分,而不影响不需要变化的其他部分。(找出应用中可能需要变化的部分,把他们独立出来,不要和那么不需要变化的代码混在一起)。 针对接口编程,而不是针...原创 2011-11-27 15:10:33 · 105 阅读 · 0 评论 -
设计模式之状态模式(State)
状态模式:允许对象在内部状态改变时改变它的行为。 状态模式UML图:将所有状态的行为(handle方法)抽象到State接口中,不同的状态处理这里接口行为时,有不同的实现。Context会将行为委托给当前的状态对象,具体的状态实现类可以自行设置成功或者失败后的状态。 如果有多个Context实例需要共享State,可将Context中的State设为静态变量。 ...原创 2011-12-18 15:24:27 · 95 阅读 · 0 评论 -
设计模式之组合模式(Composite)
组合模式:允许你将对象组合成树状结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及组合对象 组合模式UML图:组合模式的一种常见的特征就是内部有一个集合,集合当中保存着一系列的自身接口的引用。这样就可以在组合对象中任意新增新的组合对象,最终表现为一种树形结构形态。 组合模式通常和迭代器模式一起使用,来遍历某个节点下所有的子节点。 下面是一个菜...原创 2011-12-18 13:24:39 · 91 阅读 · 0 评论 -
设计模式之迭代器模式(Iterator)
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示 迭代器模式能让我游走于聚合内的每一个元素,而又不暴露其内部的表示。把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。 迭代器模式UML图:当然,这里我们的迭代器接口是自己定义的迭代器接口,我们完全可以使用JDK自带的java.util.Iterator接...原创 2011-12-18 11:05:46 · 89 阅读 · 0 评论 -
设计模式之模板方法(Template Method)
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模板方法模式UML图:为了防止模板方法被覆盖,通常将模板方法定义为final方法。 对模板方法进行挂钩(钩子方法)钩子是一种被声明在父类中的方法,通常在模板方法中被调用,但父类中通常只会给出空的或者默认的实现。钩子的存...原创 2011-12-13 22:55:44 · 105 阅读 · 0 评论 -
设计模式之适配器模式(Adapter)
适配器模式:将一个类或接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 适配器模式UML图:适配器模式使用对象组合,包装被适配者:这种做法还有另外一个优点,被适配者的任何子类,都可以搭配着适配器使用。该模式可以通过创建适配器进行接口转换,让不兼容的接口变成兼容,可以让客户从实现的接口解耦。 外观模式:提供一个统一的接口,用来访问子系统中的一群接...原创 2011-12-08 22:51:47 · 107 阅读 · 0 评论 -
设计模式之单例模式(Singleton)
单例模式:确保一个类只有一个实例,并提供一个全局访问点。 要想保证一个类只有一个实例,我们不能将构造方法暴露出去,否则调用方就可能通过你提供的构造方法去实例化该类的实例,这样我们就无法保证该类只有一个实例了。因此,我们不能给类的构造方法赋予public的访问权限。 单例模式的实例化分为两种:急切实例化和延迟实例化 急切实例化:依赖JVM在加载这个类时马上创建此唯...原创 2011-12-02 01:07:22 · 80 阅读 · 0 评论