JavaÉè¼ÆÄ£Ê½Ö®State(״̬ģʽ)
¶¨Ò壺
GOF¡¶Éè¼ÆÄ£Ê½¡·Öиø×´Ì¬Ä£Ê½ÏµĶ¨ÒåΪ£ºÔÊÐíÒ»¸ö¶ÔÏóÔÚÆäÄÚ²¿×´Ì¬¸Ä±äʱ¸Ä±äËüµÄÐÐΪ¡£
ÏÈ¿´Ò»¸öÀý×Ó£º
package com.state;
public class KissingPrincess {
// ±ê־룬±êÖ¾ÊÇÇàÍÜ»¹ÊÇÍõ×Ó¡£
private boolean isFrog = true;
// ¸ù¾ÝisFrog½øÐв»Í¬µÄ²Ù×÷¡£
public void greet() {
if (isFrog)
System.out.println("frog!");
else
System.out.println("prince!");
}
// ½«isFrogÉèÖóÉfalse¡£
public void kiss() {
isFrog = false;
}
// Ö÷º¯Êý¡£
public static void main(String[] args) {
KissingPrincess prince = new KissingPrincess();
prince.greet();
prince.kiss();
prince.greet();
}
}
Êä³ö½á¹û£º
frog!
prince!
Õâ¸öÀý×ÓÖУ¬ÓÃÁËÒ»¸ö±äÁ¿isFrogÀ´±êʶÊÇÇàÍÜ»¹ÊÇÍõ×Ó£¬Èç¹ûÊÇÍõ×ӵϰ£¬Êä³ö"prince!"£¬ÊÇÇàÍܵϰ£¬Êä³ö:“frog!”¡£
±¾ÀýÖеÄд·¨£¬ÓøöÅóÓѵϰÀ´Ëµ£¬Ö»ÊÇ“ÈëÃż¶³ÌÐòÔ±µÄд·¨”¡£ÔÚjavaÖУ¬ÒªÊ±Ê±×¢ÒâOOP(Object Oriented Programming)µÄ¸ÅÄî¡£
Èç¹û״̬ºÜ¶àµÄ»°£¬¾Í»áʹÓúܶàif else Óï¾ä£¬²»½ö·±ËöÄÑÓÚά»¤£¬¶øÇÒûÓÐÌåÏÖ³öÃæÏò¶ÔÏó±à³ÌµÄ˼Ïë¡£
¶ÔÉÏÀýÓ¦ÓÃ״̬ģʽºó£¬¿ÉÒÔ±ä³ÉÈçϵĴúÂ룺
package com.state;
public class KissingPrincess2 {
private State state = new Frog();
private interface State {
void response();
}
private class Frog implements State {
@Override
public void response() {
System.out.println("frog!");
}
}
private class Prince implements State {
@Override
public void response() {
System.out.println("prince!");
}
}
public void greet() {
state.response();
}
public void change(State state) {
this.state = state;
}
public static void main(String[] args) {
KissingPrincess2 prince2 = new KissingPrincess2();
prince2.greet();
prince2.change(prince2.new Prince());
prince2.greet();
}
}
Êä³ö½á¹û:
frog!
prince!
ÉÏÊöÀý×Ó¾ÍÊÇstateģʽµÄ»ù±¾Ë¼Ï룬ϣÍû¶ÁÕßÅóÓÑÃÇÈÏÕæÌå»á¡£
ÕâÀïÔپٸöstateģʽµÄÀý×Ó£º
Íæ¹ýcsµÄÈ˶¼ÖªµÀ£¬csÀïÃæÓкܶàǹ£¬ak47°¡£¬m16°¡£¬µ«ÊDz»¹Üʲôǹ
Ïà¹ØÎĵµ£º
Observer
Intent
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
How to
Subject
knows its observers. Any number of Observer objects may observe a subject.
provides an in ......
1. Ê×ÏÈString²»ÊôÓÚ8ÖÖ»ù±¾Êý¾ÝÀàÐÍ£¬StringÊÇÒ»¸ö¶ÔÏó¡£
¡¡¡¡ÒòΪ¶ÔÏóµÄĬÈÏÖµÊÇnull£¬ËùÒÔStringµÄĬÈÏÖµÒ²ÊÇnull£»µ«ËüÓÖÊÇÒ»ÖÖÌØÊâµÄ¶ÔÏó£¬ÓÐÆäËü¶ÔÏóûÓеÄÒ»Ð©ÌØÐÔ¡£
¡¡¡¡2. new String()ºÍnew String(“”)¶¼ÊÇÉêÃ÷Ò»¸öеĿÕ×Ö·û´®£¬Êǿմ®²»ÊÇnull£»
¡¡¡¡3. String str=”kvill”£»
......
JXLµÄ´òÓ¡ÉèÖÃÔÚjxl.SheetSettingsÕâ¸öÀàÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ý·½·¨Sheet£¨»òÕßWritableSheet£©#getSettings()»ñÈ¡¡£
1.Ò³Ãæ
1.1·½Ïò
SheetSetting#setOrientation(PageOrientation po)£»
²ÎÊý£º PageOrientation#LANDSCAPE ºáÏò´òÓ¡
PageOrientation# PO ......
ѧϰJavaÀàµÄÊôÐÔ-Î人±±´óÇàÄñ
¡¡¡¡Public¡¢private¡¢protectedÏÔʾÁËÈýÖÖÀàÖеÄÊôÐԺͷþÎñµÄÀàÐÍ£¬publicÊÇ¿ÉÒÔËæÒâ·ÃÎʵġ¢privateÊÇÍâ½ç²»ÄÜ·ÃÎʵÄ(ÏÔʾÁËÊý¾ÝµÄ·â×°ÐÔ)¡¢protected˵Ã÷Êý¾ÝÊÇÊܱ£»¤µÄ¡£ÏÂÃæ¾ÍÀ´Ïêϸ½²ÊöÒ»ÏÂÕâÈý¸ö¾¿¾¹ÓÐÊ²Ã´Çø±ð¡£
¡¡¡¡Ê×ÏÈÒªÁ˽âһϰüµÄ¸ÅÄî¡£ÓÐÈô¸É¸öÀ࣬ËüÃÇÏ໥֮¼äÓÐÒ»¶¨µÄ¹ØÏ ......