- 浏览: 18651 次
- 性别:
- 来自: 西安
-
最新评论
文章列表
模板方法模式:在一个方法中定义一个算法的骨架,而将一些实现步骤延迟到子类中。
模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
AbstractClass.java
package com.flyingh.abs;
public abstract class AbstractClass {
public final void templateMethod() {
step1();
step2();
step3();
step4();
hoop();
}
private void step1() {
...
[置顶] Facade
- 博客分类:
- Design Pattern
Facade Pattern:为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面
Tv.java
package com.flyingh.bean;
public class Tv {
public void turnOn() {
System.out.println("turn on the TV!");
}
public void chooseChannel() {
System.out.println("choose the ...
[置顶] Adapter
- 博客分类:
- Design Pattern
Adapter Pattern:将一个类的接口,转换成客户所期望的另一个接口。
1).
Target.java
package com.flyingh.target;
public interface Target {
void request();
}
Adaptee.java
package com.flyingh.adaptee;
public class Adaptee {
public void specificRequest() {
// TODO Auto-generated method stub
Syste ...
[置顶] Command
- 博客分类:
- Design Pattern
1).下面以Boss和Clerk为例:
Clerk.java代码如下:
package com.flyingh.receiver;
public class Clerk {
public void action() {
System.out.println("**************");
}
}
Command.java代码如下:
package com.flyingh.icommand;
public interface Command {
void execute();
}
Concre ...
Simple Factory:
以Fruit为例,以下是实现代码:
Fruit.java
package com.flyingh.iproduct;
public interface Fruit {
}
Apple.java
package com.flyingh.product;
import com.flyingh.iproduct.Fruit;
public class Apple implements Fruit {
}
Orange.java
package com.flyingh.product;
...
[置顶] Decorator
- 博客分类:
- Design Pattern
装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的行为,以达到特定的目的
装饰者模式动态地将责任附加到对象上。
若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
1.下面是Food.java的代码:
package com.flyingh.abs;
public abstract class Food {
protected Food food;
protected float price;
{
setPrice();
}
public abstract void setPrice();
public flo ...
[置顶] Observer
- 博客分类:
- Design Pattern
观 察 者 模 式 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
下面是House.java的代码:
package com.flyingh.observable;
import java.util.Observable;
public class House extends Observable {
private float price;
public House() {
super();
}
public House(float price) {
super();
t ...
[置顶] Singleton
- 博客分类:
- Design Pattern
下面是Singleton模式的三种实现:饿汉式:
package com.flyingh.test;
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {
super();
// TODO Auto-generated constructor stub
}
public static Singleton getInstance() {
return singleton;
}
}
懒 ...
[置顶] Strategy
- 博客分类:
- Design Pattern
有一个鸟类(Bird),它有一系列的方法,显示(display)方法,飞行(fly)方法,睡觉(sleep)方法,但是不同的鸟的外表(display方法实现)不一样,有的鸟不会飞,有的鸟站着睡……
下面用策略模式实现
策略模式:定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户
FlyBehavior接口代码如下:
package com.flyingh.behavior;
public interface FlyBehavior {
void fly();
}
SleepBehavior接口代码如下:
package com.flyingh ...
[置顶] 分解质因数(如:90=2*3*3*5)
- 博客分类:
- Java
分解质因数:如90=2*3*3*5,代码如下:
package com.flyingh.demo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Demo {
public static void main(String[] args) throws NumberFormatException,
IOException {
BufferedReader br = new Buffered ...
package com.flyingh.demo;
import java.util.Random;
public class Demo {
public static void main(String[] args) {
int[] arr = { 3, 6, 5, 8, 7, 2, 1, 9, 0, 4 };
System.out.println(select(arr, 1, 8, 5));
}
public static int select(int[] arr, int i, int j, int k) {
if (k < 1 || k ...
package com.flyingh.demo;
public class Demo {
public static void main(String[] args) {
int[] arr = { 8, 1, 7, 2, 5, 9, 0, 3, 6, 4 };
print(arr);
// bubbleSort(arr);
// selectSort(arr);
// swapSort(arr);
// insertSort(arr);
// insertSort(arr,arr.length-1);
// shellSort(arr ...