设计模式
BtWangZhi
这个作者很懒,什么都没留下…
展开
-
设计模式--工厂方法模式
1 整体类图: 接口:public interface Output { public void print();}两个实现类:public class OutputImpl implements Output{ @Override public void print() { System.out.println("OutputImpl->print原创 2017-07-07 10:58:03 · 1678 阅读 · 0 评论 -
设计模式--状态模式
1 状态模式适合状态的改变影响行为厂家,普通设计一般通过switch来达到效果,但是从可扩张性的角度来讲违背了开放–封闭原则,状态模式通过将不同状态分离出去成类,可以把复杂的判断逻辑简化。 接口:public abstract class State { public abstract void writeProgram(Work w);}三中状态:public class Morn原创 2017-07-21 18:27:25 · 306 阅读 · 0 评论 -
设计模式--适配器模式
1 两个类所做的事情相同或相似,但是具有不同的接口,如果想要使用另外一个接口的实现类,可考虑使用适配器模式。 代码结构如下: 如下代码在一个接口的实现类中引用另外一个类、 抽象父类:public abstract class Player { protected String name; public Player(String name) { this.nam原创 2017-07-23 18:09:23 · 235 阅读 · 0 评论 -
设计模式--桥接模式
1 桥接模式感觉就是来解决耦合的,个人的一点理解,参考《大话设计模式》 2 具体实现,以手机品牌和手机游戏为例,手机有很多品牌,而手机有很多个游戏,即各个手机品牌有很多个子类,手机游戏有很多个子类,通过创建手机品牌抽象类,定义一个手机游戏接口对象,在不同的手机品牌实现类中将手机接口指向具体的实现类来达到解耦的作用。 手机品牌抽象类及子类/** * 手机品牌抽象类 * @author Tang原创 2017-08-01 00:08:38 · 303 阅读 · 0 评论 -
设计模式--备忘录模式
1 将对象信息保存起来,可以以后将该对象恢复在保存之前的状态。 被保存的类:public class GameRole { // 攻击力 public Integer aggressivity; // 防御力 public Integer defensive; public GameRole(Integer aggressivity, Integer defe原创 2017-07-23 21:39:31 · 297 阅读 · 0 评论 -
设计模式--享元模式
1 享元模式:通过共享技术有效的支持大量细粒度的对象。 代码:public abstract class WebSite { public abstract void user(User user);}public class ConcreteWebSite extends WebSite { private String name; public ConcreteWebS原创 2017-08-12 00:09:05 · 323 阅读 · 0 评论 -
设计模式--职责链模式
1 职责链模式适用于将请求以链的形式传递到各个处理者,从而避免请求的发送者和接受者之间的耦合,将请求连成一条线。如下一个例子,有三个处理请求的类,每一个均处理不同的情况。 处理抽象方法:public abstract class Handler { protected Handler handler; public void setHandler(Handler handler) {原创 2017-08-05 13:26:28 · 339 阅读 · 0 评论 -
设计模式--中介者模式
1 中介者模式通过定义一个中介的方式解耦两个对象之间互相的调用。 中介抽象类:public abstract class AbstractAgency { protected List<AbstractColleague> lstColleague = new ArrayList<AbstractColleague>(); /** * 消息处理方法 *原创 2017-08-05 16:51:37 · 290 阅读 · 0 评论 -
设计模式--门面模式
1 门面模式 门面模式抽象图如下,通过创建一个类将一系列业务集成来面向外部,实现各个业务的解耦。 实例: 每个Computer都有CPU、Memory、Disk。在Computer开启和关闭的时候,相应的部件也会开启和关闭,所以,使用了该外观模式后,会使用户和部件之间解耦。如: 以上图片摘自: http://www.cnblogs.com/lthIU/p/5860607.html,原创 2017-06-18 03:26:04 · 390 阅读 · 0 评论 -
设计模式--抽象工厂模式
1 抽象工厂模式在工厂方法的基础上演变而来,通过反射来生成指定的对象,现有一需求,对不同的数据库的不同表执行操作。 代码结构图如下: 定义一个用户接口:public interface IUSer { public void insert();}SqlServer用户操作:public class SqlServerUser implements IUSer{ @Overrid原创 2017-07-21 15:29:51 · 349 阅读 · 0 评论 -
设计模式--装饰者模式
1 动态地给一个对象添加一些额外的职位,就增加功能来说,装饰模式比生成子类更加灵活。 创建接口,定义要装饰的操作: 整体结构: public interface Component { public void operation();}被装饰的操作:public class ConcreteComponent implements Component { @Override原创 2017-07-09 01:47:29 · 290 阅读 · 0 评论 -
设计原则--面向对象
1 单一职责原则 在一个类中,应该仅有一个引起变化的原因。在类中,如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。 软件设计真正要做的许多内容,就是发现职责并把这些职责相互分离。原创 2017-07-08 22:22:33 · 265 阅读 · 0 评论 -
设计模式--原型模式
1 原型模式通过克隆对象,减少系统开销,要克隆的对象必须要继承Cloneable接口,否者会报错。 自定义一个克隆操作接口:public interface ICloneable { public Object Clone();}实体类:package com.tang.design.clone;public class Resume implements Cloneable,IClonea原创 2017-07-11 10:18:17 · 318 阅读 · 0 评论 -
设计模式--模板方法模式
1 模板方法模式即为将共同的方法提炼出来,针对不同的情况,将涉及到的具体的方法交给子类去执行。 如下例子,考题是共有的,每一个人有不同的答案,书写答案方法在考题中定义为一个抽象方法。交个不同子类去执行。 定义一个抽象类,将子类共同的向上实现共有。public abstract class AbstractTest { private String name; public void原创 2017-07-11 21:54:56 · 338 阅读 · 0 评论 -
设计模式--建设者模式
1 将相同的操作向上集中到抽象类和接口中,引入一个指挥类来控制实现类中各部分中方法的执行,如下Demo,创建一个人可以创造高矮胖瘦,对应不同的实现类,但是创建的一个人每一个操作是必须存在的,执行的顺序也是相同的,所以引入一个指挥类,添加一个引用来指向具体想实现的类,创建工作交给该操作类来完成即可,与工厂模式不同的是每一个操作的执行均交给了一个指挥类。代码如下: 定义一个接口,声明创建一个类的必要操原创 2017-07-12 09:58:11 · 850 阅读 · 0 评论 -
设计模式--代理模式
1 静态代理模式 抽象角色–一般使用接口或者抽象类来实现。 被代理的角色–被代理的角色 代理角色–代理真实角色。代理真实角色后一般会做一些附属操作。 客户–使用代理角色来进行一些操作。 优点:真实角色变得更加的纯粹,各个类分工明确,不再关注公共的事情,公共的业务由代理来完成,实现了业务的分工。公共业务发生扩展时,变得更加集中和方便,实现解耦。 缺点:类增加了,工作量变多了。开发效原创 2017-06-05 01:31:51 · 340 阅读 · 0 评论 -
设计模式--单例模式
1 单例模式 当一个类始终只允许创建一个实例,来减少系统的开销,这种类被称为单例类,这种模式被称为单例模式。public class Singleton { /** * 保存已定义的对象 */ private static Singleton instance; //将该类的构造方法封装起来 private Singleton(){} publ原创 2017-06-17 18:37:31 · 389 阅读 · 1 评论 -
设计模式--命令模式
1 命令模式 某个行为的具体实现无法确定。必须等到执行该方法时才可以确定,使用一个接口参数来表示未知的处理行为,通过接口的实现类的对象来确定未知的行为。 接口:public interface Command { public void process(Integer[] data);}实现类:public class AddCommand implements Command{原创 2017-06-18 02:34:42 · 324 阅读 · 0 评论 -
设计模式--策略模式
接口:public interface Discount { public double getDiscount(double orignalPrice);}实现类:public class OldDiscount implements Discount { @Override public double getDiscount(double originPrice) {原创 2017-07-07 11:00:19 · 378 阅读 · 0 评论 -
设计模式--简单工厂模式
面对可能的变化,通过创建工厂来创建不同的对象来实现很多功能的切换,不用在业务代码中切换。 1 接口:public interface Output { public void print();}两个实现类public class OutputImpl implements Output{ @Override public void print() {原创 2017-07-07 10:57:05 · 414 阅读 · 0 评论 -
设计模式--观察者模式
1 观察者模式定义了一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在变化时,会通知所有的观测者对象,使他们能自动更细自己。具体代码如下: 观测者抽象类:public abstract class Observer { protected String name; protected Subject subject; public Observer(Stri原创 2017-07-13 00:22:31 · 246 阅读 · 0 评论