锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 9銆?span lang="EN-US">Interpreter(瑙i噴鍣?
瀹氫箟涓涓搷浣滀腑綆楁硶鐨勯鏋?灝嗕竴浜涙楠ょ殑鎵ц寤惰繜鍒板叾瀛愮被涓?
2銆?span lang="EN-US">Memento錛堝蹇樺綍妯″紡錛?br />
澶囧繕褰曟ā褰曞疄闄呬笂鏄璞″唴閮ㄧ姸鎬佺殑鎷瘋礉錛岃繍琛屽埌鏌愪釜鏃跺欏彲浠ユ仮澶嶅畠鍘熸湁鐨勭姸鎬侊紝鍦ㄥ疄闄呭紑鍙戜腑鎴戜滑緇忓父浼氱敤鍒拌妯″紡錛屼絾鍐欐硶鍙兘涓嶄竴鏍楓?br />
3銆?span lang="EN-US">Observer
鍒漢璇存槸瑙傚療鑰咃紝鎴戝枩嬈㈣榪欐槸鐩戝惉妯″紡錛屽氨鏄緗竴涓璞$殑鐩戝惉瀵硅薄錛屽綋琚洃鍚璞$殑鐘舵佹敼鍙樻椂瑙﹀彂涓涓簨浠訛紝JDK宸茬粡鎻愪緵瀹炵幇浜嗐傞渶瑕佺敤鍒版椂GOOGLE涓鏍峰氨OK銆?br />
4銆?span lang="EN-US">Chain of Responsibility錛堣亴璐i摼錛?br />
灝辨槸涓涓璞″綋浣滀竴涓弬鏁頒紶閫掔粰涓嶅悓鐨勫榪涜鑱岃矗澶勭悊銆?br />
5銆?span lang="EN-US">Command
灝辯湅鍏蜂綋灝佽浜嗭紝瀹為檯寮鍙戜腑鐢ㄤ竴寰椾篃鎸哄銆?br />
6銆?span lang="EN-US">State
7銆?span lang="EN-US">Strategy(絳栫暐)
鏄綆楁硶鐨勪竴縐嶅皝瑁?br />
8銆?span lang="EN-US">Mediator(涓粙鑰?
鍚勪釜瀵硅薄涔嬮棿鐨勪氦浜掓搷浣滈潪甯稿;姣忎釜瀵硅薄鐨勮涓烘搷浣滈兘渚濊禆褰兼瀵規柟,淇敼涓涓璞$殑琛屼負,鍚屾椂浼氭秹鍙婂埌淇敼寰堝鍏朵粬瀵硅薄鐨勮涓?濡傛灉浣跨敤Mediator妯″紡,鍙互浣垮悇涓璞¢棿鐨勮﹀悎鏉炬暎,鍙渶鍏沖績鍜?Mediator鐨勫叧緋?浣垮瀵瑰鐨勫叧緋誨彉鎴愪簡涓瀵瑰鐨勫叧緋?鍙互闄嶄綆緋葷粺鐨勫鏉傛?鎻愰珮鍙慨鏀規墿灞曟?
10銆?strong>Visitor錛堝弬瑙傝呮ā寮忥級
灝辨槸閬嶅巻綾婚泦涓殑瀵硅薄鍚?/span>
]]>
涓哄瓙緋葷粺鎻愪緵緇熶竴鐨勬帴鍙o紝榪欎釜鎺ュ彛灝卞彨闂ㄥ湪浜嗭紝瀹㈡埛鍙渶涓庨棬闈㈡潵鐨勪氦閬擄紝鍐呴儴璋冪敤閭d釜鍔熻兘妯″潡瀵瑰鎴風被鏉ヨ鏄殣钘忕殑銆傜幇瀹炵敓媧諱腑鍘誨尰闄㈢湅鐥呮崱鑽殑渚嬪瓙鏄竴鏍風殑銆?br />
2銆佷唬鐞嗘ā寮?Proxy)
鏈変袱縐嶆柟寮忎竴縐嶆槸闈欐佷唬鐞嗭紝鍙︿竴縐嶆槸鍔ㄦ佷唬鐞嗐備唬鐞嗘ā寮忓氨鏄負鍏跺畠瀵硅薄鎻愪緵浠g悊浠ユ帶鍒跺榪欎釜瀵硅薄鐨勮闂?br />
3銆侀傞厤鍣ㄦā寮忥紙Adapter錛?br />
灝嗕袱涓笉鍏煎鐨勭被綰犲悎鍦ㄤ竴璧蜂嬌鐢?浣跨敤榪欎釜妯″紡鏃訛紝鏈濂戒互闈㈠悜鎺ュ彛鐨勬柟寮忓疄涓錛岃屼笉鐢ㄧ戶鎵褲傝繖鏄竴涓瘮杈冨ソ鐞嗚В鐨勬ā鍧楋紝涓嶉渶瑕佺湅渚嬬▼灝卞簲璇ヨ兘鍥炲繂璧峰畠鐨勭粨鏋勩?br />
4銆佺粍鍚堟ā寮忥紙Composite錛?br />
灝嗗璞′互鏍戠殑褰㈠紡緇勫悎璧鋒潵錛屼互杈炬垚鏁翠綋涓庨儴浠界殑緇撴瀯銆傚茍鍦ㄧ被涓彁渚涙坊鍔狅紝鍒犻櫎錛岄亶鍘嗚繖涓変釜鏂規硶銆傞氬父浠ユ搷璞$被涓虹埗綾繪潵瀹炵幇銆?br />
5銆佹補婕嗗伐妯″紡錛?span lang="EN-US">Decorator錛?br />
璇寸櫧浜嗗氨鏄粰涓涓被鍐嶆坊鍔犱簺鍔熻兘錛岄氬父鍙互鍦ㄨ璁′腑鍙互浣跨敤緇ф壙錛屽啀瀹炵幇涓帴鍙c傝妯″紡鍙互閬垮厤榪欐牱鍋氾紝瀹炰竴鏂規硶鏄湪瀹炵幇鎺ュ彛鐨勭被鏂規硶涓紝娣諱腑涓浜涢澶栧姛鑳藉嚱鏁般?br />
6銆佹ˉ鎺ユā寮忥紙Bridge錛?o:p>
灝嗘搷璞′笌琛屼負鍒嗙銆?br />
7銆佷韓鍏冩ā寮?Flyweight)
璇寸櫧浜嗗氨鏄竴涓狹ap 鐢ㄦ潵瀛樺偍瀵硅薄鏃訛紝鍏堝垽鏂璏ap涓槸鍚︽湁璇ュ璞★紝濡傛灉鏈夊氨涓嶉渶鍐嶅瓨榪涖傛垨鑰呰浠庡埆鐨勫湴鏂硅仈涓涓璞℃椂錛屽厛鍦∕ap閲屾壘錛屽鏋滄壘鍒板氨涓嶇敤鍘誨埆鐨勫湴鏂逛簡銆傛湁鐐圭被浼間簬涓涓睜銆傚叿浣撳疄鐜板氨涓嶈浜?br />
]]>
璁捐妯″紡鍒嗙被鍙互璇存槸浠ョ被鍒板璞″垱寤鴻繃紼嬫潵鍒掑垎鐨勩?br />
璁捐妯″紡鏈変簺涔︽槸闀跨瘒澶ц錛岃鎴戜笉鐭ユ墍鎺紝淇烘枃鍖栨按騫充綆鍙兘浠庝釜浜虹殑瑙佽В涓婂仛綆鍗曠殑鍒嗘瀽錛屽茍鍙嶇畝鍗曠殑鎬濇兂鐢ㄥ埌瀹為檯寮鍙戜腑銆?br />
鍒涘緩妯″紡鏈?涓瓙妯″紡錛?br />
榪?涓ā寮忛兘鏄垱寤哄璞$殑錛屽彧涓嶆槸鍒涘緩鐨勬柟寮忎笉涓鏍鳳紝鏈夌殑瀵硅薄鍙兘鍒涘緩涓涓紱鏈夌殑瀵硅薄鏄氳繃宸ュ巶鏉ョ敓浜э紱鏈夌殑瀵硅薄鐢卞緢澶氬皬瀵硅薄緇勬垚錛堟湁鏁翠綋涓庨儴浠藉叧緋伙級灝遍氳繃Builder(鏋勯?,涓嬮潰鍋氫粙緇?br />
1銆?span lang="EN-US">Factory
瀛︿範璁捐妯″紡涓嶆槸瑕佺墷璁板畠鏄庝箞瀹炵幇鐨勶紝涓嶈璁頒綇鍒楀瓙錛屽彧瑕佽浣忔濇兂灝卞彲浠ヤ簡錛屽綋浣犲湪鐜板疄涓仛璁捐鐨勬椂鍊欙紝璁╄繖浜涙濇兂嫻幇鍦ㄤ綘鑴戞搗閲岋紝閫夋嫨鏈閫傜敤浣犵殑瀹炵幇鏂規硶銆?br />
]]>
import java.util.*;
import org.apache.commons.lang.StringUtils;
interface Command{
聽public void execute();
}
interface Parameter{
聽public聽 String getCommandType();
}
class Engineer implements Command{
聽public void execute() {
聽聽// TODO Auto-generated method stub
聽聽System.out.println("Enginer....");
聽}
聽
}
class Programer implements Command{
聽public void execute() {
聽聽// TODO Auto-generated method stub
聽聽System.out.println("Programer....");
聽}
聽
}
class Doctor implements Command{
聽public void execute() {
聽聽// TODO Auto-generated method stub
聽聽System.out.println("Doctor.............");
聽}
聽
}
class EngineerParameter implements Parameter{
聽public String getCommandType() {
聽聽// TODO Auto-generated method stub
聽聽return "Engineer";
聽}
聽
}
class CommandProduce{
聽public static List commandList=new ArrayList();
聽public CommandProduce(){
聽聽commandList.add(new Engineer());
聽聽commandList.add(new Programer());
聽聽commandList.add(new Doctor());
聽}
聽public static Command getCommand(Parameter p){
聽聽Iterator it=commandList.iterator();
聽聽while(it.hasNext()){
聽聽聽Object c=(Object)it.next();
聽聽聽System.out.println(c.getClass().getName());
聽聽聽if(StringUtils.indexOf(c.getClass().getName(),p.getCommandType())>0){
聽聽聽聽return (Command)c;
聽聽聽}
聽聽}
聽聽return null;
聽}
}
public class CommandImpl {
聽public static void main(String[] args) {
聽聽// TODO Auto-generated method stub
聽聽EngineerParameter ep=new EngineerParameter();
聽聽CommandProduce cp=new CommandProduce();
聽聽(CommandProduce.getCommand(ep)).execute();
聽}
}
import java.util.*;
class Product extends Observable{//琚瀵熻呭繀緇ф壙浜嶰bservable
聽
聽private String pname;
聽private float price;
聽
聽public String getPname() {
聽聽return pname;
聽}
聽public void setPname(String pname) {
聽聽this.pname = pname;
聽聽setChanged();
聽聽notifyObservers(pname);
聽}
聽public float getPrice() {
聽聽return price;
聽}
聽public void setPrice(float price) {
聽聽this.price = price;
聽聽setChanged();
聽聽notifyObservers(new Float(price));
聽}
}
class NameObserver implements Observer{ //瑙傚療鑰呭繀欏誨疄鐜癘bserver鎺ュ彛
聽public void update(Observable arg0, Object arg1) {
聽聽if(arg1 instanceof String){
聽聽聽System.out.println("浜у搧鍚?-->"+arg1);
聽聽}
聽}
聽
}
class PriceObserver implements Observer{
聽public void update(Observable arg0, Object arg1) {
聽聽if(arg1 instanceof Float){
聽聽聽System.out.println("浜у搧浠鋒牸鏄?>"+arg1);
聽聽}
聽}
聽
}
public class ObserverImpl {
聽/**
聽 * @param args
聽 */
聽public static void main(String[] args) {
聽聽// TODO Auto-generated method stub
聽聽Product p=new Product();
聽聽p.setPname("鐢佃剳");
聽聽p.setPrice(Float.valueOf("5632.6"));
聽聽NameObserver no=new NameObserver();
聽聽PriceObserver po=new PriceObserver();
聽聽p.addObserver(no);
聽聽p.addObserver(po);
聽聽p.setPname("絎旇鏈數鑴?);
聽聽p.setPrice(Float.valueOf("9635.5"));
聽}
}
import java.io.*;
import java.util.*;
class Originator{
聽private int number;
聽private File file;
聽
聽
聽
聽
聽public File getFile() {
聽聽return file;
聽}
聽public void setFile(File file) {
聽聽this.file = file;
聽}
聽public int getNumber() {
聽聽return number;
聽}
聽public void setNumber(int number) {
聽聽this.number = number;
聽}
聽public Originator(){}
聽//鍒涘緩澶囦喚
聽public Memento getMemento(){
聽聽return new Memento(this);
聽}
聽//鎭㈠鍒板師濮嬪?br />聽public void setMemento(Memento m){
聽聽this.file=m.getFile();
聽聽this.number=m.getNumber();
聽}
}
class Memento implements Serializable{
聽private聽 int number;
聽private聽 File file;
聽public File getFile() {
聽聽return file;
聽}
聽public void setFile(File file) {
聽聽this.file = file;
聽}
聽public int getNumber() {
聽聽return number;
聽}
聽public void setNumber(int number) {
聽聽this.number = number;
聽}
聽public Memento(Originator o){
聽聽this.number=o.getNumber();
聽聽this.file=o.getFile();
聽}
聽
}
public class MemebtoImpl {
聽/**
聽 * @param args
聽 */
聽public static void main(String[] args) {
聽聽// TODO Auto-generated method stub
聽聽Originator o=new Originator();
聽聽o.setNumber(100);
聽聽Memento m=o.getMemento();//寤哄涓涓浠藉璞?br />聽聽o.setNumber(50); //鏀瑰彉瀵硅薄灞炴?br />聽聽o.setMemento(m); //榪樺師
聽聽System.out.println(o.getNumber());
聽}
}
abstract class Benchmark{
聽public abstract void benchmark();
聽
聽/**
聽 * 閲嶅鎵ц鐨勬鏁?br />聽 * @param count
聽 * @return
聽 */
聽public final long repeat(int count){
聽聽long startTime;
聽聽if(count<0){
聽聽聽return 0;
聽聽}else{
聽聽聽startTime=System.currentTimeMillis();
聽聽聽for(int i=0;i<count;i++){
聽聽聽聽benchmark();
聽聽聽}
聽聽}
聽聽long stopTime=System.currentTimeMillis();
聽聽return stopTime-startTime;
聽聽
聽}
}
class MethodBenchmark extends Benchmark{
聽public void benchmark() {
聽聽for(int i=0;i<200000;i++){
聽聽聽System.out.println("i="+i);
聽聽}
聽}
聽
}
public class TemplateImpl {
聽/**
聽 * @param args
聽 */
聽public static void main(String[] args) {
聽聽Benchmark operation=new MethodBenchmark();
聽聽long d=operation.repeat(1);
聽聽System.out.println("鎵ц涓嬈℃墍闇瑕佺敤鐨勬椂闂達細"+d);
聽}
}
import java.util.*;
class CD{
聽private String title;
聽private int year;
聽private Artist artist;
聽
聽
聽public Artist getArtist() {
聽聽return artist;
聽}
聽public void setArtist(Artist artist) {
聽聽this.artist = artist;
聽}
聽public String getTitle() {
聽聽return title;
聽}
聽public void setTitle(String title) {
聽聽this.title = title;
聽}
聽public int getYear() {
聽聽return year;
聽}
聽public void setYear(int year) {
聽聽this.year = year;
聽}
聽
聽
}
class Artist{
聽private String name;
聽public String getName(){
聽聽return this.name;
聽}
聽public Artist(String n){
聽聽this.name=n;
聽}
聽
}
class ArtistFactory{
聽
聽Hashtable flyweights=new Hashtable();
聽Artist getArtist(String key){
聽聽Artist result;
聽聽result=(Artist)flyweights.get(key);
聽聽if(result==null){
聽聽聽result=new Artist(key);
聽聽聽flyweights.put(key,result);
聽聽}
聽聽return result;
聽}
}
public class FlyweightImpl {
聽/**
聽 * @param args
聽 */
聽public static void main(String[] args) {
聽聽CD cd=new CD();
聽聽ArtistFactory af=new ArtistFactory();
聽聽cd.setArtist(new Artist("鏉?));
聽聽cd.setTitle("嫻嬭瘯");
聽聽cd.setYear(1998);
聽聽Artist va=af.getArtist("瑁?);
聽聽System.out.println(va.getName());
聽聽af.getArtist("鏉?);
聽聽
聽聽System.out.println(af.flyweights.size());
聽}
}
//鎵撴柟鍨?br />class SquarePeg{
聽public void insert(String str){
聽聽System.out.println("鎵撴柟鍨?->"+str);
聽}
}
//鎵撳渾鏌卞瀷
class RoundPeg{
聽public void insertIntohole(String msg){
聽聽System.out.println("鎵撳渾鏌卞瀷-->"+msg);
聽}
}
class PegAdapter extends SquarePeg{
聽private RoundPeg rp;
聽public PegAdapter(RoundPeg vrp){
聽聽this.rp=vrp;
聽}
聽public void insertRound(String str){
聽聽rp.insertIntohole(str);
聽}
聽public void insertSquare(String str){
聽聽super.insert(str);
聽}
}
public class AdapterImpl {
聽
聽
聽/**
聽 * @param args
聽 */
聽public static void main(String[] args) {
聽聽RoundPeg rp=new RoundPeg();
聽聽PegAdapter pg=new PegAdapter(rp);
聽聽pg.insertRound("鍦嗘煴鍨?);
聽聽pg.insertSquare("鏂瑰瀷");
聽}
}
class SingletonA{
聽private SingletonA(){
聽聽
聽}
聽private static SingletonA _instance=new SingletonA();
聽public static SingletonA getInstance(){
聽聽return _instance;
聽}
}
class SingletonB{
聽private static SingletonB _instance;
聽public static SingletonB getInstance(){
聽聽if(_instance==null){
聽聽聽return new SingletonB();
聽聽}else{
聽聽聽return _instance;
聽聽}
聽聽
聽}
}
public class SingletonImpl {
聽/**
聽 * @param args
聽 */
聽public static void main(String[] args) {
聽聽// TODO Auto-generated method stub
聽}
}
/*
聽* 浜у搧鎺ュ彛
聽*/
interface Produce{
聽public void OutProduceInfo();
}
/*
聽* 鏋勫緩閮ㄤ歡
聽*/
class Director{
聽private Builder builder;
聽
聽public Director(Builder vbuilder){
聽聽this.builder=vbuilder;
聽}
聽
聽public void construct(){
聽聽builder.buildPartA();
聽聽builder.buildPartB();
聽}
聽
}
/*
聽* 閮ㄤ歡瀹炵幇綾?br />聽*/
class PartAImpl implements PartA{
聽public void builderA() {
聽聽// TODO Auto-generated method stub
聽聽System.out.print("PartA緇勮瀹屾垚...");
聽}
聽public void outPartAInfo() {
聽聽// TODO Auto-generated method stub
聽聽System.out.println("PartA 淇℃伅銆傘傘?");
聽}
聽
}
class PartBImpl implements PartB{
聽public void builderB() {
聽聽// TODO Auto-generated method stub
聽聽System.out.println("鏋勯犻儴浠禕瀹屾垚....");
聽}
聽
}
class ProduceImpl implements Produce{
聽private PartA pa;
聽private PartB pb;
聽private ProduceImpl(){}
聽public聽 ProduceImpl(PartA pa,PartB pb){
聽聽this.pa=pa;
聽聽this.pb=pb;
聽}
聽public void OutProduceInfo() {
聽聽// TODO Auto-generated method stub
聽聽pa.builderA();
聽聽pb.builderB();
聽聽pa.outPartAInfo();
聽聽System.out.println("榪欓噷杈撳叆浜嗕駭鍝佷俊鎭紝褰撶劧浜у搧榪樻湁寰堝鍔熻兘鏂規硶娌″啓鍛?);
聽}
聽
}
class Cbuilder implements Builder{
聽PartA pa;
聽PartB pb;
聽public void buildPartA() {
聽聽pa=new PartAImpl(); //鍏蜂綋瀛愰儴浠跺疄鐜頒唬鐮?br />聽聽
聽}
聽public void buildPartB() {
聽聽
聽聽pb=new PartBImpl();
聽}
聽public Produce getResult() {
聽聽ProduceImpl pi=new ProduceImpl(pa,pb);
聽聽return pi;
聽}
聽
}
聽
public class BuilderImpl {
聽
聽
聽/**
聽 * @param args
聽 */
聽public static void main(String[] args) {
聽聽// TODO Auto-generated method stub
聽聽Cbuilder builder=new Cbuilder();
聽聽Director d=new Director(builder);
聽聽d.construct();
聽聽Produce p=builder.getResult();
聽聽p.OutProduceInfo();
聽}
}
abstract class AbsHello implements Cloneable{
聽
聽String username;
聽public String getUsername() {
聽聽return username;
聽}
聽public void setUsername(String username) {
聽聽this.username = username;
聽}
聽
聽public abstract void sayHello();
聽
聽public Object clone(){
聽聽Object object=null;
聽聽try{
聽聽聽object=super.clone();
聽聽聽
聽聽}catch(Exception e){
聽聽聽System.err.println(e);
聽聽}
聽聽return object;
聽}
}
class OneHello extends AbsHello{
聽public OneHello(){
聽聽setUsername("peidw");
聽}
聽@Override
聽public void sayHello() {
聽聽// TODO Auto-generated method stub
聽聽System.out.println("OneHello-->SayHello to "+username);
聽}
聽
}
class TwoHello extends AbsHello{
聽public TwoHello(){
聽聽setUsername("pxm");
聽}
聽@Override
聽public void sayHello() {
聽聽// TODO Auto-generated method stub
聽聽System.out.println("TwoHello-->sayHello to "+username);
聽}
聽
}
public class Prototype {
聽/**
聽 * @param args
聽 */
聽public static void main(String[] args) {
聽聽// TODO Auto-generated method stub
聽聽AbsHello oneh=new OneHello();
聽聽AbsHello twoh=new TwoHello();
聽聽oneh.sayHello();
聽聽twoh.sayHello();
聽}
}
interface Me{
聽public void sayHello();
聽public void sayBay();
}
class SampleFacotry implements Me{
聽public void sayHello() {
聽聽// TODO Auto-generated method stub
聽聽System.out.println("sampleFacotry->SayHello....");
聽}
聽public void sayBay() {
聽聽// TODO Auto-generated method stub
聽聽System.out.println("sampleFacotry->Bay....");
聽}
聽
}
class PPFacotry implements Me{
聽public void sayHello() {
聽聽// TODO Auto-generated method stub
聽聽System.out.println("PPFacotry-->"+"Say Hello");
聽}
聽public void sayBay() {
聽聽// TODO Auto-generated method stub
聽聽System.out.println("PPFacotry-->"+"Say Bay.");
聽}
聽
}
聽 /**
聽聽 * 浠ヤ竴鑸伐鍘傛柟娉曟瀯閫犵被
聽聽 * @author Administrator
聽聽 *
聽聽 */
class CreateFacotry{
聽public static Me createFacotry(String aa){
聽聽if(aa.equalsIgnoreCase("Sample")){
聽聽聽return new SampleFacotry();
聽聽}else if(aa.equalsIgnoreCase("")){
聽聽聽return new PPFacotry();
聽聽}else{
聽聽聽return null;
聽聽}
聽}
}
/**
聽* 鎿嶈薄宸ュ巶鐨勫疄鐜般?br />聽* @author Administrator
聽*
聽*/
abstract class CFacory{
聽public abstract SampleFacotry mecreator();
聽public abstract PPFacotry kkmeicreator();
}
class CFacoryImple extends CFacory{
聽@Override
聽public SampleFacotry mecreator() {
聽聽// TODO Auto-generated method stub
聽聽return new SampleFacotry();
聽}
聽@Override
聽public PPFacotry kkmeicreator() {
聽聽// TODO Auto-generated method stub
聽聽return new PPFacotry();
聽}
聽
}
public class Facotry {
聽public static void main(String[] args){
聽聽Me a=CreateFacotry.createFacotry("Sample");
聽聽a.sayHello();
聽聽CFacoryImple cfi=new CFacoryImple();
聽聽Me me=cfi.mecreator();
聽聽Me ppme=cfi.kkmeicreator();
聽聽me.sayBay();
聽聽ppme.sayBay();
聽}
}
浠ヤ笂榪欎釜渚嬬▼錛岃鏄庝簡涓鑸伐鍘備互鍙婃搷璞″伐鍘傜殑瀹炵幇銆?br />宸ュ巶榪欎釜鏋勯犳ā寮忓湪寮鍙戜腑浼氱粡甯哥敤鍒?