关于Java 设计模式 观察者模式 Observer
1、Subject.java
package com.ssm.cts.pattern.observer;
import java.util.Vector;
public abstract class Subject {
// 定义一个观察者数组
private Vector<Observer> obsVector = new Vector<Observer>();
// 增加一个观察者
public void addObserver(Ob
1、Subject.java
package com.ssm.cts.pattern.observer;
import java.util.Vector;
public abstract class Subject {
// 定义一个观察者数组
private Vector<Observer> obsVector = new Vector<Observer>();
// 增加一个观察者
public void addObserver(Ob
1、Tree.java
package com.ssm.cts.pattern.composite;
public abstract class Tree {
// 姓名
private String name = “”;
// 职位
private String position = “”;
public Tree(String _name, String _position) {
this.name = _name;
this.position =
1、IAction.java
package com.ssm.cts.pattern.iterator;
public interface IAction {
public String getActionInfo();
}
2、Action.java
package com.ssm.cts.pattern.iterator;
public class Action implements IAction {
// 项目名称
private Stri
1、MediaPlayer.java
package com.ssm.cts.pattern.adapter;
public interface MediaPlayer {
public void play(String audioType, String fileName);
}
2、MediaAdapter.java
package com.ssm.cts.pattern.adapter;
public class MediaAdapter implemen
1、Context.java
package com.ssm.cts.pattern.strategy;
public class Context {
private Strategy straegy;
public Context(Strategy _strategy) {
this.straegy = _strategy;
}
public void operate() {
this.straegy.operate();
}
}
1、Report.java
package com.ssm.cts.pattern.decorator;
public abstract class Report {
public abstract void display();
}
2、MonthReport.java
package com.ssm.cts.pattern.decorator;
public class MonthReport extends Report {
@Override
p
1、AbstractLogger.java
package com.ssm.cts.pattern.chain;
public abstract class AbstractLogger {
public static int INFO = 1;
public static int DEBUG = 2;
public static int ERROR = 3;
protected int level;
// 责任链中的下一个元素
protected Abst
1、Action.java
package com.ssm.cts.pattern.command;
public abstract class Action {
// 增加功能
public abstract void add();
// 删除功能
public abstract void delete();
// 修改功能
public abstract void change();
}
2、BusAction.java
package co
1、Order.java
package com.ssm.cts.pattern.mediator;
public class Order {
public void buyBar(int number) {
Stock stock = new Stock();
stock.increase(number);
System.out.println(“采购人员采购汽车:” + number + “台”);
}
}
2、Sale.java
1、Car.java
package com.ssm.cts.pattern.prototype;
import java.util.ArrayList;
public class Car implements Cloneable {
private ArrayList<String> arrayList = new ArrayList<String>();
@Override
public Car clone() {
Car car =
1、IKeeper.java
package com.ssm.cts.pattern.proxy;
public interface IKeeper {
public void careForBoy();
}
2、Keeper.java
package com.ssm.cts.pattern.proxy;
public class Keeper implements IKeeper {
private String name = “”;
publi
1、CarModel.java
package com.ssm.cts.pattern.template;
public abstract class CarModel {
// 启动
public abstract void start();
// 停止
public abstract void stop();
// 喇叭声音
public abstract void alarm();
// 引擎声音
public abstract void en
1、CarModel.java
package com.ssm.cts.pattern.builder;
import java.util.ArrayList;
public abstract class CarModel {
// 执行顺序
private ArrayList<String> sequence = new ArrayList<String>();
// 启动
protected abstract void start()
1、SingleObject.java
package com.ssm.cts.pattern.singleton;
public class SingleObject {
private static SingleObject instance;
private SingleObject() {
}
public static synchronized SingleObject getInstance() {
if (instance == null) {
1、Shape.java
package com.ssm.cts.pattern.abstractfactory;
public interface Shape {
void draw();
}
2、Circle.java
package com.ssm.cts.pattern.abstractfactory;
public class Circle implements Shape {
@Override
public void draw() {
1、Shape.java
package com.ssm.cts.pattern.factory;
public interface Shape {
void draw();
}
2、Circle.java
package com.ssm.cts.pattern.factory;
public class Circle implements Shape {
@Override
public void draw() {
System.out.print
二路归并排序的基本思想:设 n 个待排记录,看成是 n 个有序的子序列,每个子序列的长度为 1 ,对此进行两两归并,得到 n/2 个长度为 2 或 1 的有序子序列;再继续两两归并,得到 n/4 个有序子序列,重复进行直至得到一个长度为 n 的有序序列为止。
public class MergeSort {
public static void main(String[] args) {
//int[] arr = { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
堆排序是利用堆的特性进行排序的过程。
堆排序:输出堆顶的最小(大)值后,使剩余的n-1个元素序列重新再建成堆,则可得到原序列的次小(大)值。反复进行可得到一个有序序列,整个过程称为堆排序。
堆排序分为两个步骤:
根据初始输入数据,形成初始堆;
通过一系列的记录交换和重新调整堆进行排序。
public class HeapSort {
// 主函数
public static void main(String[] args) {
int[] arr = { 2
希尔排序又称“缩小增量排序”,是通过对直接插入排序进行改进得到的一种插入排序法。
基本思想:将整个待排序列分割成几个较小的子序列分别进行直接插入排序,待整个序列中的记录基本有序时,再对整个记录序列进行一次直接插入排序。
过程:设待排序列有n个记录, 首先取一个整数d1< n 作为步长, 将全部记录分为d1个子序列, 所有距离为d1的记录放在同一个子序列中, 在每个子序列中分别施行直接插入排序。然后缩小步长 , 如取 d2=d1/2,重复上述的子序列划分和排序工作。直到最后取dt=1
快速排序是对气泡排序的一种改进。
基本思想:通过一趟排序将待排序列分割成独立的两部分,其中一部分元素的排序码均比另一部分的排序码小,分别对这两部分继续进行排序,直至整个序列有序。
具体过程:设待排序列为 A[s..t],选取任意一个元素作为支点(基准元素,一般就选A[s]),然后从区间两端向中间依次比较元素,一旦发现前半部分有元素大于基准元素,后半部分有元素小于基准元素,则交换这两个元素,所有元素比较一遍后,最后把基准元素交换到两部分的中间,使得所有比基准元素大的都排在此基准元素的后面;