设计模式
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 · 2636 阅读 · 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 · 3601 阅读 · 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 · 4490 阅读 · 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 · 3785 阅读 · 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 · 2084 阅读 · 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 · 1970 阅读 · 0 评论 -
命令者模式
//Command模式经常用来作为还原功能,也就是Ctrl+Zpublic abstract class Command { public abstract void execute(); //返回上一步 public abstract void unDo();}public class ShopingCommand extends Command{ @Override public原创 2012-07-01 19:34:06 · 2352 阅读 · 1 评论 -
抽象工厂模式第三步-使用抽象工厂模式
其实使用abstract和interface只是根据你的需求来使用,在一些问题上并无太大的区别简单的工厂在产生产品系列(武器,食品等)的时候会很麻烦,会导致工厂泛滥抽象工厂在产生产品种类(枪,苹果等)的时候需要修改的地方会很多public class Person { public static void main(String[] args) { Abs原创 2012-05-21 20:25:41 · 2178 阅读 · 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 · 2170 阅读 · 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 · 2275 阅读 · 0 评论 -
策略模式-鸭子的变化
OO基础:抽象、封装、多态、继承OO原则:封装变化、多用组合,少用继承、针对接口编程,不针对实现编程策略模式:定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户1、代码结构:2、飞行packagepackage duck.fly;/** * 鸭子飞行接口 */public interface FlyBehavior {原创 2013-08-23 19:16:09 · 2598 阅读 · 0 评论 -
观察者模式-气象站
观察者模式,在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。1、代码结构:package observer;/** * 观察者接口 */public interface Observer { /** * 当气象观测值改变时,主题会把这些状态值当作方法的参数,传递给观察者 * @param temp 温度 *原创 2013-08-23 22:12:32 · 2148 阅读 · 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 · 2853 阅读 · 2 评论 -
简单模拟Comparable-策略模式
//使一个类本身具备比较性//优点:实现此接口的类可以自己重写自己规定比较的内容//缺点:因为只有一个方法,一个类只能有一种方式进行比较public interface MyComparable { public int compareTo(E e);}//人public class Person implements MyComparable{ private int age;原创 2012-05-29 18:32:02 · 2163 阅读 · 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 · 2719 阅读 · 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 · 761 阅读 · 0 评论 -
工厂方法模式-雷锋工厂-大话设计模式
类结构图://工厂方法模式,工厂接口public interface Factory { LeiFeng createLeiFengFactory();}//雷锋public interface LeiFeng { void sweep();//扫地 void wash();//洗衣 void buyrice();//做饭}//使用简单工厂public class原创 2012-05-22 21:24:04 · 1402 阅读 · 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 · 912 阅读 · 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 · 672 阅读 · 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 · 841 阅读 · 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 · 3888 阅读 · 0 评论 -
使用自动生成java文件和自动编译的静态代理模式
public interface Moveable { void move();//}public class Car implements Moveable{ @Override public void move() { System.out.println("我是卡车,出发开往目的地..."); }}//动态代理1public class Proxy { public st原创 2012-06-28 23:51:00 · 3271 阅读 · 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 · 2018 阅读 · 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 · 2781 阅读 · 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 · 3546 阅读 · 0 评论 -
装饰者模式-星巴克
例子一、咖啡的制作/** * 饮料类 */public abstract class Beverage { //描述 String description = "Unknown Beverage"; public String getDescription(){ return description; } //价格 public abstract double原创 2013-09-24 21:12:56 · 3196 阅读 · 0 评论