设计模式
wxwzy738
这个作者很懒,什么都没留下…
展开
-
策略模式-商场促销-大话设计模式
类结构://父类,商场结账的算法 public interface SuperCash { //得到算过后的结账金额 public double getcash(double cash); }//正常的结账 public class NormalCash implements SuperCash{ public double getcash(double cash) { return原创 2012-05-31 19:43:18 · 2625 阅读 · 0 评论 -
责任链或过滤器模式3-模拟tomcat的过滤器
//过滤器接口 public interface Filter { public void doFilter(Request req,Response res,FilterChain c); } //HTML的过滤器 public class HTMLFilter implements Filter{ @Override public void doFilter(Request req, R原创 2012-07-01 16:08:31 · 3576 阅读 · 0 评论 -
责任链或过滤器模式2-使用过滤链
//过滤器接口 public interface Filter { public String doFilter(String str); }//HTML的过滤器 public class HTMLFilter implements Filter{ @Override public String doFilter(String str) { if(str==null)return "";原创 2012-07-01 15:23:09 · 4464 阅读 · 0 评论 -
桥接设计模式-追MM的技术
图一, 图二, 图三,类的结构 public class Boy { public static void main(String[] args) { new Boy().zui(new MM("春哥")); } private String name; public String getName() { return name; } public void setName(St原创 2012-05-15 21:11:36 · 3770 阅读 · 0 评论 -
抽象工厂模式第二步-使用简单工厂模式
文件结构图: public class Person { public static void main(String[] args) { //使用简单工厂模式进行设计 DefaultFactory f=new DefaultFactory(); Car c=f.createCar(); c.run(); AK47 ak47=f.createAK47(); ak47.shot原创 2012-05-20 11:57:28 · 2080 阅读 · 0 评论 -
抽象工厂模式第一步-传统实现方法
文件结构: public static void main(String[] args) { Car car=new Car(); car.run(); AK47 ak=new AK47(); ak.shot(); /** * 打印结果: * 我开着一辆汽车.. * 拿着一只Ak47手枪 */ //按照传统的模式,如果要把这个人的行为"开着汽车,拿着手枪"变成了”原创 2012-05-20 11:37:59 · 1965 阅读 · 0 评论 -
命令者模式
//Command模式经常用来作为还原功能,也就是Ctrl+Z public abstract class Command { public abstract void execute(); //返回上一步 public abstract void unDo(); }public class ShopingCommand extends Command{ @Override public原创 2012-07-01 19:34:06 · 2321 阅读 · 1 评论 -
抽象工厂模式第三步-使用抽象工厂模式
其实使用abstract和interface只是根据你的需求来使用,在一些问题上并无太大的区别 简单的工厂在产生产品系列(武器,食品等)的时候会很麻烦,会导致工厂泛滥 抽象工厂在产生产品种类(枪,苹果等)的时候需要修改的地方会很多 public class Person { public static void main(String[] args) { Abs原创 2012-05-21 20:25:41 · 2153 阅读 · 0 评论 -
简单工厂方法
类结构: public class Main { public static void main(String[] args) { // VihecleFactory factory=new CarFactory(); VihecleFactory factory=new BroomFactory(); Moveable move=factory.create(); move.ru原创 2012-05-17 19:36:20 · 2164 阅读 · 0 评论 -
静态代理模式
public interface Moveable { void move(); }public class Tank implements Moveable{ @Override public void move() { System.out.println("我是坦克,所向披靡,进攻中!"); try { Thread.sleep(new Random().nextInt原创 2012-06-10 13:47:45 · 2250 阅读 · 0 评论 -
策略模式-鸭子的变化
OO基础:抽象、封装、多态、继承 OO原则:封装变化、多用组合,少用继承、针对接口编程,不针对实现编程 策略模式:定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户 1、代码结构: 2、飞行package package duck.fly; /** * 鸭子飞行接口 */ public interface FlyBehavior {原创 2013-08-23 19:16:09 · 2572 阅读 · 0 评论 -
观察者模式-气象站
观察者模式,在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。 1、代码结构: package observer; /** * 观察者接口 */ public interface Observer { /** * 当气象观测值改变时,主题会把这些状态值当作方法的参数,传递给观察者 * @param temp 温度 *原创 2013-08-23 22:12:32 · 2123 阅读 · 0 评论 -
简单模拟LinkedList
底层结构为链表; import java.util.Iterator; //LinkedLink其实是双向链表 public class MyLinkedList implements Iterable{ int size; private Node head=null;//头部节点 private Node tail=null;//尾部节点 public void add(E e)原创 2012-05-26 15:40:23 · 2830 阅读 · 2 评论 -
简单模拟Comparable-策略模式
//使一个类本身具备比较性 //优点:实现此接口的类可以自己重写自己规定比较的内容 //缺点:因为只有一个方法,一个类只能有一种方式进行比较 public interface MyComparable { public int compareTo(E e); }//人 public class Person implements MyComparable{ private int age;原创 2012-05-29 18:32:02 · 2155 阅读 · 0 评论 -
桥接设计模式-手机软件何时统一-大话设计模式
需求: 图1: 图2: 图3: 类结构: public class Main { public static void main(String[] args) { Soft soft=new GameSoft(); soft.setName("泡泡堂"); SanXingBrand b=new SanXin原创 2012-05-15 22:16:57 · 2710 阅读 · 0 评论 -
简单工厂实现-大话设计模式
类结构图: public static void main(String[] args) { // Operation oper=OperationFactory.createOperation("+"); Operation oper=OperationFactory.createOperation("-"); System.out.println(oper.getResult原创 2012-05-22 20:33:04 · 732 阅读 · 0 评论 -
工厂方法模式-雷锋工厂-大话设计模式
类结构图: //工厂方法模式,工厂接口 public interface Factory { LeiFeng createLeiFengFactory(); } //雷锋 public interface LeiFeng { void sweep();//扫地 void wash();//洗衣 void buyrice();//做饭 } //使用简单工厂 public class原创 2012-05-22 21:24:04 · 1368 阅读 · 0 评论 -
动态代理的实现3-实现aop功能的封装和配置
//一个通告或建议的接口 public interface Advice { void afterMethod(Method method); void beforeMethod(Method method); }public class MyAdvice implements Advice{ private long start; @Override public void after原创 2012-06-30 21:35:43 · 882 阅读 · 0 评论 -
动态代理的实现2-编写可生成代理和插入通告的通用方法
//一个通告或建议的接口 public interface Advice { void afterMethod(Method method); void beforeMethod(Method method); }public class MyAdvice implements Advice{ private long start; @Override public void after原创 2012-06-30 21:30:17 · 639 阅读 · 0 评论 -
动态代理的实现1-简单实现
1, 2, 3, 4, 5, public class Test { public static void main(String[] args) throws Exception{ //第一种实现方式:分步骤操作 Class clazzproxy=Proxy.getProxyClass(Collection.class.getCl原创 2012-06-30 21:07:29 · 812 阅读 · 0 评论 -
使用自动生成java文件和自动编译的动态代理模式
/* * 接口中有几个方法,那么使用反射的getMethods()就会有几个方法名 * 因为接口是不会继承Object的 */ public interface Moveable { void move();// }public class Car implements Moveable{ @Override public void move() { System.out.prin原创 2012-06-29 23:46:02 · 3862 阅读 · 0 评论 -
使用自动生成java文件和自动编译的静态代理模式
public interface Moveable { void move();// }public class Car implements Moveable{ @Override public void move() { System.out.println("我是卡车,出发开往目的地..."); } }//动态代理1 public class Proxy { public st原创 2012-06-28 23:51:00 · 3245 阅读 · 0 评论 -
状态模式
//表示状态的接口类 public interface State { void smile(); void cry(); void say(); }//高兴的状态 public class HappyState implements State{ @Override public void cry() { System.out.println("高兴的哭"); } @Overr原创 2012-07-01 20:02:16 · 1988 阅读 · 0 评论 -
责任链或过滤器模式1-使用过滤器
//过滤器接口 public interface Filter { public String doFilter(String str); }//HTML的过滤器 public class HTMLFilter implements Filter{ @Override public String doFilter(String str) { if(str==null)return "";原创 2012-07-01 14:45:25 · 2749 阅读 · 0 评论 -
简单模拟Comparator-策略设计模式
//使一个类本身具备比较性 //优点:实现此接口的类可以自己重写自己规定比较的内容 //缺点:因为只有一个方法,一个类只能有一种方式进行比较 public interface MyComparable { public int compareTo(E e); }public interface MyComparator { int compare(T o1,T o2); }//排序类 publ原创 2012-05-30 21:18:03 · 3519 阅读 · 0 评论 -
装饰者模式-星巴克
例子一、咖啡的制作 /** * 饮料类 */ public abstract class Beverage { //描述 String description = "Unknown Beverage"; public String getDescription(){ return description; } //价格 public abstract double原创 2013-09-24 21:12:56 · 3186 阅读 · 0 评论