Java设计模式
学习中呢
一个本科小生的匍匐前进之路
展开
-
策略模式
设计一个当当购物网站 算法一:对初级会员没有折扣 算法二:对中级会员提供10%的促销折扣 算法三:对高级会员提供20%的促销折扣 抽象折扣类 public interface MemberStrategy { /** * 计算图书的价格 * @param booksPrice 图书的原价 * @return 计算原创 2017-05-29 16:43:03 · 434 阅读 · 0 评论 -
模板设计模式
模板设计模式 抽象父类定义抽象方法和非抽象方法,在非抽象方法中调用子类实现的抽象方法 //父类 abstract class Parent { abstract void cc(); public abstract void cc(){ System.out.println("parent"); } public void bb(){ cc(); } } //子原创 2017-05-29 17:05:36 · 502 阅读 · 0 评论 -
观察者模式
public class Observable { private boolean changed = false; private final ArrayList observers; /** Construct an Observable with zero Observers. */ public Observable() { observ原创 2017-07-05 18:12:19 · 193 阅读 · 0 评论 -
代理模式
代理模式分为静态代理和动态代理,静态代理在编译阶段产生字节码,动态代理在运行阶段产生字节码(反射)。 静态代理: 定义一个要实现的接口: public interface KindWoman { public void happyWithMan(); public void makEyesWithMan();//抛媚眼 } 实现类和代理类 public class PanJinLi原创 2017-08-20 12:26:57 · 233 阅读 · 0 评论 -
适配器模式
适配器模式将一个类的接口转换成客户期望的另一个接口,让原本不兼容的接口可以合作无间。 适配器模式有三个特点: 适配器对象实现原有接口 适配器对象组合一个实现新接口的对象(这个对象可以不识闲一个接口,只是一个单纯的对象) 对适配器原有接口方法的调用被委托给新接口的实例的特定方法 下面我们举一个充电器的例子,比如我们去美国旅游,我们来到一家旅店需要用美国充电器才能充电,而我们带的是中国的充电器,那么我原创 2017-08-21 21:58:40 · 254 阅读 · 0 评论 -
建造者模式
抽象建造者/** * 建造者角色 * 工人接口,定义了各个工人所需要进行的工作 * 并不负责具体的建造 * * 同时房子是具体的(农民工)建造的 所以需要有返回房子的方法 * @author tucheng * */ public interface Build { public void makeWindow(); public void makeFloor()原创 2017-10-18 15:07:13 · 262 阅读 · 0 评论 -
责任链模式
责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 责任链模式涉及到的角色如下所示: ● 抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接原创 2017-10-18 15:20:19 · 168 阅读 · 0 评论 -
命令模式
/** * 士兵 * @author Administrator * */ public class Soldier { private String attach; private String back; public String getAttach() { return attach; } public void setAttac原创 2017-10-24 20:38:54 · 219 阅读 · 0 评论 -
模板方法模式
定义 定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类不改变算法的结构即可重复定义算法的某些特点步骤角色 AbstractClass抽象类,定义算法结构,还可以提供通用实现 ConcreteClass具体实现类,选择性的重定义算法中某些特定步骤解决的问题 一些方法通用,却在每一个子类都重新写了这一方法。优缺点 优点: 1、封装不变部分,扩展可变部分。 2、提取公共代码,便于原创 2017-12-17 22:31:26 · 185 阅读 · 0 评论