zoukankan      html  css  js  c++  java
  • 命令模式

    【1】什么是命令模式?

    命令模式:

    【2】命令模式的代码示例:

    代码示例:

       1 #if 0
       2 
       3 #include <iostream>
       4 #include <string>
       5 using namespace std;
       6 
       7 /*
       8  * 运算基类
       9  */
      10 class Operation
      11 {
      12 public:
      13     double numberA;
      14     double numberB;
      15 public:
      16     virtual double  getResult()
      17     {
      18         return 0;
      19     }
      20 };
      21 
      22 /*
      23  * 加法运算子类
      24  */
      25 class addOperation : public Operation
      26 {
      27     double getResult()
      28     {
      29         return numberA + numberB;
      30     }
      31 };
      32 
      33  /*
      34   * 减法运算子类
      35   */
      36 class subOperation : public Operation
      37 {
      38     double getResult()
      39     {
      40         return numberA - numberB;
      41     }
      42 };
      43 
      44  /*
      45   * 乘法运算子类
      46   */
      47 class mulOperation : public Operation
      48 {
      49     double getResult()
      50     {
      51         return numberA * numberB;
      52     }
      53 };
      54 
      55  /*
      56   * 除法运算子类
      57   */
      58 class divOperation : public Operation
      59 {
      60     double getResult()
      61     {
      62         return numberA / numberB;
      63     }
      64 };
      65 
      66  /*
      67   * 简单构建工厂
      68   */
      69 class operFactory
      70 {
      71 public:
      72     static Operation *createOperation(char c)
      73     {
      74         switch (c)
      75         {
      76         case '+':
      77             return new addOperation;
      78             break;
      79         case '-':
      80             return new subOperation;
      81             break;
      82         case '*':
      83             return new mulOperation;
      84             break;
      85         case '/':
      86             return new divOperation;
      87             break;
      88         default:
      89             break;
      90         }
      91     }
      92 };
      93 
      94  /*
      95   * 客户端应用示例
      96   */
      97 void main()
      98 {
      99     Operation *oper = operFactory::createOperation('+');
     100     oper->numberA = 9;
     101     oper->numberB = 99;
     102     cout << oper->getResult() << endl;
     103 }
     104 
     105  /*
     106   * 简单工厂模式应用示例
     107   */
     108 #include <iostream>
     109 #include <cmath>
     110 #include <string>
     111 using namespace std;
     112 
     113 class CashSuper
     114 {
     115 public:
     116     virtual double acceptMoney(double money) = 0;
     117 };
     118 
     119 class CashNormal : public CashSuper
     120 {
     121 public:
     122     double acceptMoney(double money)
     123     {
     124         return money;
     125     }
     126 };
     127 
     128 class CashRebate : public CashSuper
     129 {
     130 private:
     131     double discount;
     132 public:
     133     CashRebate(double dis)
     134     {
     135         discount = dis;
     136     }
     137     double acceptMoney(double money)
     138     {
     139         return money * discount;
     140     }
     141 };
     142 
     143 
     144 class CashReturn : public CashSuper
     145 {
     146 private:
     147     double moneyCondition;
     148     double moneyReturn;
     149 public:
     150     CashReturn(double mc, double mr)
     151     {
     152         moneyCondition = mc;
     153         moneyReturn = mr;
     154     }
     155     double acceptMoney(double money)
     156     {
     157         double result = money;
     158         if (money >= moneyCondition)
     159         {
     160             result = money - floor(money / moneyCondition) * moneyReturn;
     161         }
     162         return result;
     163     }
     164 };
     165 
     166 class CashFactory
     167 {
     168 public:
     169     static CashSuper *createCashAccept(string str)
     170     {
     171         CashSuper *cs = NULL;
     172         if ("正常收费" == str)
     173         {
     174             return new CashNormal();
     175         }
     176         else if ("打9折" == str)
     177         {
     178             return new CashRebate(0.9);
     179         }
     180         else if ("满300返200" == str)
     181         {
     182             return new CashReturn(300, 200);
     183         }
     184         return cs;
     185     }
     186 };
     187 
     188 
     189 void main()
     190 {
     191     CashSuper *cs = NULL;
     192     
     193     cs = CashFactory::createCashAccept("打9折");
     194     cout << cs->acceptMoney(1000) << endl;
     195 
     196     cs = CashFactory::createCashAccept("正常收费");
     197     cout << cs->acceptMoney(1000) << endl;
     198 }
     199 
     200 
     201 
     202 
     203  /*
     204   * 策略模式
     205   */
     206 
     207 #include <iostream>
     208 #include <cmath>
     209 #include <string>
     210 using namespace std;
     211 
     212 class CashSuper
     213 {
     214 public:
     215     virtual double acceptMoney(double money) = 0;
     216 };
     217 
     218 class CashNormal : public CashSuper
     219 {
     220 public:
     221     double acceptMoney(double money)
     222     {
     223         return money;
     224     }
     225 };
     226 
     227 class CashRebate : public CashSuper
     228 {
     229 private:
     230     double discount;
     231 
     232 public:
     233     CashRebate(double dis)
     234     {
     235         discount = dis;
     236     }
     237     double acceptMoney(double money)
     238     {
     239         return money * discount;
     240     }
     241 };
     242 
     243 
     244 class CashReturn : public CashSuper
     245 {
     246 private:
     247     double moneyCondition;
     248     double moneyReturn;
     249 
     250 public:
     251     CashReturn(double mc, double mr)
     252     {
     253         moneyCondition = mc;
     254         moneyReturn = mr;
     255     }
     256     double acceptMoney(double money)
     257     {
     258         double result = money;
     259         if (money >= moneyCondition)
     260         {
     261             result = money - floor(money / moneyCondition) * moneyReturn;
     262         }
     263         return result;
     264     }
     265 };
     266 
     267 class  CashContext
     268 {
     269 private:
     270     CashSuper *cs;
     271 public:
     272     CashContext(CashSuper *cs)
     273     {
     274         this->cs = cs;
     275     }
     276     double getResult(double money)
     277     {
     278         return cs->acceptMoney(money);
     279     }
     280 };
     281 
     282 void main()
     283 {
     284     CashSuper *cs;
     285     CashContext *cc;
     286     double money = 1000;
     287 
     288     cs = new CashRebate(0.8);
     289     cc = new CashContext(cs);
     290     cout << cc->getResult(money) << endl;
     291 
     292     money = 1000;
     293     cs = new CashNormal();
     294     cc = new CashContext(cs);
     295     cout << cc->getResult(money) << endl;
     296 
     297 }
     298 
     299 
     300 
     301  /*
     302   * 策略与工厂模式
     303   */
     304 #include <iostream>
     305 #include <cmath>
     306 #include <string>
     307 using namespace std;
     308 
     309 class CashSuper
     310 {
     311 public:
     312     virtual double acceptMoney(double money) = 0;
     313 };
     314 
     315 class CashNormal : public CashSuper
     316 {
     317 public:
     318     double acceptMoney(double money)
     319     {
     320         return money;
     321     }
     322 };
     323 
     324 class CashRebate : public CashSuper
     325 {
     326 private:
     327     double discount;
     328 public:
     329     CashRebate(double dis)
     330     {
     331         discount = dis;
     332     }
     333     double acceptMoney(double money)
     334     {
     335         return money * discount;
     336     }
     337 };
     338 
     339 
     340 class CashReturn : public CashSuper
     341 {
     342 private:
     343     double moneyCondition;
     344     double moneyReturn;
     345 public:
     346     CashReturn(double mc, double mr)
     347     {
     348         moneyCondition = mc;
     349         moneyReturn = mr;
     350     }
     351     double acceptMoney(double money)
     352     {
     353         double result = money;
     354         if (money >= moneyCondition)
     355         {
     356             result = money - floor(money / moneyCondition) * moneyReturn;
     357         }
     358         return result;
     359     }
     360 };
     361 
     362 class  CashContext
     363 {
     364 private:
     365     CashSuper *cs;
     366 public:
     367     CashContext(string str)
     368     {
     369         if ("正常收费" == str)
     370         {
     371             cs = new CashNormal();
     372         }
     373         else if ("打9折" == str)
     374         {
     375             cs = new CashRebate(0.9);
     376         }
     377         else if ("满300送200" == str)
     378         {
     379             cs = new CashReturn(300, 200);
     380         }        
     381     }
     382     double getResult(double money)
     383     {
     384         return cs->acceptMoney(money);
     385     }
     386 };
     387 
     388 
     389 int main()
     390 {
     391     double money = 1000;
     392     CashContext *cc = new CashContext("打9折");
     393     cout << cc->getResult(money);
     394     return 0;
     395 }
     396 
     397 
     398 #include <string>
     399 #include <iostream>
     400 using namespace std;
     401 
     402 class Person
     403 {
     404 private:
     405     string m_strName;
     406 public:
     407     Person(string strName)
     408     {
     409         m_strName = strName;
     410     }
     411 
     412     Person(){}
     413 
     414     virtual void show()
     415     {
     416         cout << "装扮的是:" << m_strName << endl;
     417     }
     418 };    
     419 
     420 class Finery : public Person
     421 {
     422 protected:
     423     Person *m_component;
     424 public:
     425     void decorate(Person* component)
     426     {
     427         m_component = component;
     428     }
     429     virtual void show()
     430     {
     431         m_component->show();
     432     }
     433 };
     434 
     435 class TShirts : public Finery
     436 {
     437 public:
     438     virtual void show()
     439     {
     440         m_component->show();
     441         cout << "T shirts" << endl;
     442     }
     443 };
     444 
     445 class BigTrouser : public Finery
     446 {
     447 public:
     448     virtual void show()
     449     {
     450         m_component->show();
     451         cout << "Big Trouser" << endl;
     452     }
     453 };
     454 
     455 int main()
     456 {
     457     Person *p = new Person("小李");
     458     BigTrouser *bt = new BigTrouser();
     459     TShirts *ts = new TShirts();
     460         
     461     bt->decorate(p);
     462     ts->decorate(bt);
     463     ts->show();
     464 
     465     return 0;
     466 }
     467 
     468 #include <iostream>
     469 #include <string>
     470 using namespace std;
     471 
     472 class SchoolGirl
     473 {
     474 public:
     475     string name;
     476 };
     477 
     478 /*
     479  * 接口
     480  */
     481 class IGiveGift
     482 {
     483 public:
     484     virtual void giveDolls() = 0;
     485     virtual void giveFlowers() = 0;
     486 };
     487 
     488 /*
     489  * 委托类
     490  */
     491 class Pursuit : public IGiveGift
     492 {
     493 private:
     494     SchoolGirl mm;
     495 
     496 public:
     497     Pursuit(SchoolGirl m)
     498     {
     499         mm = m;
     500     }
     501     void giveDolls()
     502     {
     503         cout << mm.name << " 送你娃娃" << endl;    
     504     }
     505     void giveFlowers()
     506     {
     507         cout << mm.name << " 送你鲜花" << endl;    
     508     }
     509 };
     510 
     511 /*
     512  * 代理类
     513  */
     514 class Proxy : public IGiveGift
     515 {
     516 private:
     517     Pursuit gg;
     518 
     519 public:
     520     Proxy(SchoolGirl mm) : gg(mm)
     521     {
     522     }
     523     void giveDolls()
     524     {
     525         gg.giveDolls();
     526     }
     527     void giveFlowers()
     528     {
     529         gg.giveFlowers();
     530     }
     531 };
     532 
     533 /*
     534  * 客户端
     535  */
     536 int main()
     537 {
     538     SchoolGirl lijiaojiao;
     539     lijiaojiao.name = "李娇娇"; 
     540     Pursuit zhuojiayi(lijiaojiao); 
     541     Proxy daili(lijiaojiao);
     542 
     543     daili.giveDolls();
     544     daili.giveFlowers();
     545 
     546     return 0;
     547 }
     548 
     549 #include <iostream>
     550 #include <string>
     551 using namespace std;
     552 
     553 class Operation
     554 {
     555 public:
     556     double numberA;
     557     double numberB;
     558 
     559     virtual double getResult()
     560     {
     561         return 0;
     562     }
     563 };
     564 
     565 class addOperation : public Operation
     566 {
     567     double getResult()
     568     {
     569         return numberA + numberB;
     570     }
     571 };
     572 
     573  
     574 class subOperation : public Operation
     575 {
     576     double getResult()
     577     {
     578         return numberA - numberB;
     579     }
     580 };
     581 
     582 class mulOperation : public Operation
     583 {
     584     double getResult()
     585     {
     586         return numberA * numberB;
     587     }
     588 };
     589 
     590 class divOperation : public Operation
     591 {
     592     double getResult()
     593     {
     594         return numberA / numberB;
     595     }
     596 };
     597 
     598 class IFactory
     599 {
     600 public:
     601     virtual Operation *createOperation() = 0;
     602 };
     603 
     604 class AddFactory : public IFactory
     605 {
     606 public:
     607     static Operation *createOperation()
     608     {
     609         return new addOperation();
     610     }
     611 };
     612 
     613 
     614 class SubFactory : public IFactory
     615 {
     616 public:
     617     static Operation *createOperation()
     618     {
     619         return new subOperation();
     620     }
     621 };
     622 
     623 class MulFactory : public IFactory
     624 {
     625 public:
     626     static Operation *createOperation()
     627     {
     628         return new mulOperation();
     629     }
     630 };
     631 
     632 class DivFactory : public IFactory
     633 {
     634 public:
     635     static Operation *createOperation()
     636     {
     637         return new divOperation();
     638     }
     639 };
     640 
     641 int main()
     642 {
     643     Operation *oper = MulFactory::createOperation();
     644     oper->numberA = 9;
     645     oper->numberB = 99;
     646     cout << oper->getResult() << endl;
     647     return 0;
     648 }
     649 
     650 #include <iostream>
     651 #include <string>
     652 using namespace std;
     653 
     654 class Prototype
     655 {
     656 private:
     657     string str;
     658 public:
     659     Prototype(string s)
     660     {
     661         str = s;
     662     }
     663     Prototype()
     664     {
     665         str = "";
     666     }
     667     void show()
     668     {
     669         cout << str << endl;
     670     }
     671     virtual Prototype *clone() = 0;
     672 };
     673 
     674 class ConcretePrototype1 : public Prototype
     675 {
     676 public:
     677     ConcretePrototype1(string s) : Prototype(s)
     678     {}
     679     ConcretePrototype1(){}
     680     virtual Prototype *clone()
     681     {
     682         ConcretePrototype1 *p = new ConcretePrototype1();
     683         *p = *this;
     684         return p;
     685     }
     686 };
     687 
     688 
     689 class ConcretePrototype2 : public Prototype
     690 {
     691 public:
     692     ConcretePrototype2(string s) : Prototype(s)
     693     {}
     694     ConcretePrototype2(){}
     695     virtual Prototype *clone()
     696     {
     697         ConcretePrototype2 *p = new ConcretePrototype2();
     698         *p = *this;
     699         return p;
     700     }
     701 };
     702 
     703 int main()
     704 {
     705     ConcretePrototype1 *test = new ConcretePrototype1("小李");
     706     ConcretePrototype2 *test2 = (ConcretePrototype2 *)test->clone();
     707     test->show();
     708     test2->show();
     709     return 0;
     710 }
     711 
     712 #include <iostream>
     713 #include <string>
     714 using namespace std;
     715  
     716 class Resume
     717 {
     718 private:
     719     string name, sex, age, timeArea, company;
     720 public:
     721     Resume(string s)
     722     {
     723         name = s;
     724     }
     725     void setPersonalInfo(string s, string a)
     726     {
     727         sex = s;
     728         age = a;
     729     }
     730     void setWorkExperience(string t, string c)
     731     {
     732         timeArea = t;
     733         company = c;
     734     }
     735     void display()
     736     {
     737         cout << name << "  " << sex << "  " << age << endl;
     738         cout << "工作经历:  " << timeArea << "  " << company << endl;
     739 
     740     }
     741     Resume *clone()
     742     {
     743         Resume *b = new Resume(name);
     744         b->setPersonalInfo(sex, age);
     745         b->setWorkExperience(timeArea, company);
     746         return b;
     747     }
     748 };
     749 
     750 
     751 int main()
     752 {
     753     Resume *r = new Resume("李俊宏");      
     754     r->setPersonalInfo("","26");
     755     r->setWorkExperience("2007-2010","读研究生");
     756     r->display();
     757     
     758 
     759     Resume *r2 = r->clone();
     760     r2->setWorkExperience("2003-2007","读本科");
     761     
     762     r->display();
     763     r2->display();
     764     
     765     return 0;
     766 }
     767 
     768 #include <iostream>
     769 #include <string>
     770 using namespace std;
     771 
     772 class TestPaper
     773 {
     774 public:
     775     void question1()
     776     {
     777         cout << "1+1=" << answer1() << endl;
     778     }
     779     void question2()
     780     {
     781         cout << "1*1=" << answer2() << endl;
     782     }
     783     virtual string answer1()
     784     {
     785         return "";
     786     }
     787     virtual string answer2()
     788     {
     789         return "";
     790     }
     791     virtual ~TestPaper()
     792     {
     793     }
     794 };
     795 
     796 class TestPaperA : public TestPaper
     797 {
     798 public:
     799     string answer1()
     800     {
     801         return "2";
     802     }
     803     virtual string answer2()
     804     {
     805         return "1";
     806     }
     807 };
     808 
     809 class TestPaperB : public TestPaper
     810 {
     811 public:
     812     string answer1()
     813     {
     814         return "3";
     815     }
     816     virtual string answer2()
     817     {
     818         return "4";
     819     }
     820 };
     821 
     822 
     823 int main()
     824 {
     825     cout << "A的试卷:" << endl;
     826     TestPaper *s1 = new TestPaperA();
     827     s1->question1();
     828     s1->question2();
     829     delete s1;
     830 
     831     cout << endl;
     832     cout << "B的试卷:" << endl;
     833     TestPaper *s2 = new TestPaperB();
     834     s2->question1();
     835     s2->question2();
     836 
     837     return 0;
     838 }
     839 
     840 #include<iostream>
     841 #include <vector>
     842 #include <string>
     843 using namespace std;
     844 
     845 class AbstractClass
     846 {
     847 public:
     848     void Show()
     849     {
     850         cout << "我是" << GetName() << endl;
     851     }
     852 protected:
     853     virtual string GetName() = 0;
     854 };
     855 
     856 class Naruto : public AbstractClass
     857 {
     858 protected:
     859     virtual string GetName()
     860     {
     861         return "火影史上最帅的六代目---一鸣惊人naruto";
     862     }
     863 };
     864 
     865 class OnePice : public AbstractClass
     866 {
     867 protected:
     868     virtual string GetName()
     869     {
     870         return "我是无恶不做的大海贼---路飞";
     871     }
     872 };
     873 
     874 //客户端
     875 int main()
     876 {
     877     Naruto* man = new Naruto();
     878     man->Show();
     879 
     880     OnePice* man2 = new OnePice();
     881     man2->Show();
     882 
     883     return 0;
     884 }
     885 
     886 #include <iostream>
     887 #include <string>
     888 using namespace std;
     889 
     890 class Sub1
     891 {
     892 public:
     893     void f1()
     894     {
     895         cout << "子系统的方法 1" << endl;
     896     }
     897 };
     898 
     899 class Sub2
     900 {
     901 public:
     902     void f2()
     903     {
     904         cout << "子系统的方法 2" << endl;
     905     }
     906 };
     907 
     908 class Sub3
     909 {
     910 public:
     911     void f3()
     912     {
     913         cout << "子系统的方法 3" << endl;
     914     }
     915 };
     916 
     917 class Facade
     918 {
     919 private:
     920     Sub1 *s1;
     921     Sub2 *s2;
     922     Sub3 *s3;
     923 public:
     924     Facade()
     925     {
     926         s1 = new Sub1();
     927         s2 = new Sub2();
     928         s3 = new Sub3();
     929     }
     930 
     931     void method()
     932     {
     933         s1->f1();
     934         s2->f2();
     935         s3->f3();
     936     }
     937 
     938     ~Facade()
     939     {
     940         if (s1)
     941             delete s1;
     942         if (s2)
     943             delete s2;
     944         if (s3)
     945             delete s3;
     946     }
     947 };
     948 
     949 int main()
     950 {
     951     Facade *f = new Facade();
     952     f->method();
     953     return 0;
     954 }
     955 
     956 #include <string>
     957 #include <iostream>
     958 #include <vector>
     959 using namespace std;
     960 
     961 class Person
     962 {
     963 public:
     964     virtual void createHead() = 0;
     965     virtual void createHand() = 0;
     966     virtual void createBody() = 0;
     967     virtual void createFoot() = 0;
     968 };
     969 
     970 class ThinPerson : public Person
     971 {
     972     void createHead()
     973     {
     974         cout << "thin head" << endl;
     975     }
     976     void createHand()
     977     {
     978         cout << "thin hand" << endl;
     979     }
     980     void createBody()
     981     {
     982         cout << "thin body" << endl;
     983     }
     984     void createFoot()
     985     {
     986         cout << "thin foot" << endl;
     987     }
     988 };
     989 
     990 class FatPerson : public Person
     991 {
     992     void createHead()
     993     {
     994         cout << "fat head" << endl;
     995     }
     996     void createHand()
     997     {
     998         cout << "fat hand" << endl;
     999     }
    1000     void createBody()
    1001     {
    1002         cout << "fat body" << endl;
    1003     }
    1004     void createFoot()
    1005     {
    1006         cout << "fat foot" << endl;
    1007     }
    1008 };
    1009 
    1010 
    1011 class Director
    1012 {
    1013 private:
    1014     Person *p;
    1015 public:
    1016     Director(Person *temp)
    1017     {
    1018         p = temp;
    1019     }
    1020     void create()
    1021     {
    1022         p->createHead();
    1023         p->createHand();
    1024         p->createBody();
    1025         p->createFoot();
    1026     }
    1027 };
    1028 
    1029 //客户端代码:
    1030 int main()
    1031 {
    1032     Person *p = new FatPerson();
    1033     Person *b = new ThinPerson();
    1034     Director *d = new Director(p);
    1035     Director *s = new Director(b);
    1036     d->create();
    1037     s->create();
    1038     delete d;
    1039     delete p;
    1040     delete s;
    1041     delete b;
    1042 
    1043     return 0;
    1044 }
    1045 
    1046 #include <string>
    1047 #include <iostream>
    1048 #include <vector>
    1049 using namespace std;
    1050 
    1051 class Product
    1052 {
    1053 private:
    1054     vector<string> product;
    1055 public:
    1056     void add(string str)
    1057     {
    1058         product.push_back(str);
    1059     }
    1060     void show()
    1061     {
    1062         vector<string>::iterator iter = product.begin();
    1063         while (iter != product.end())
    1064         {
    1065             cout << *iter << "  ";
    1066             ++iter;
    1067         }
    1068         cout << endl;
    1069     }
    1070 };
    1071 
    1072 class Builder
    1073 {
    1074 public:
    1075     virtual void builderA() = 0;
    1076     virtual void builderB() = 0;
    1077     virtual Product *getResult() = 0;
    1078 };
    1079 
    1080 class ConcreteBuilder1 : public Builder
    1081 {
    1082 private:
    1083     Product *product;
    1084 public:
    1085     ConcreteBuilder1()
    1086     {
    1087         product = new Product();
    1088     }
    1089     virtual void builderA()
    1090     {
    1091         product->add("one");
    1092     }
    1093     virtual void builderB()
    1094     {
    1095         product->add("two");
    1096     }
    1097     virtual Product *getResult()
    1098     {
    1099         return product;
    1100     }
    1101 };
    1102 
    1103 
    1104 class ConcreteBuilder2 : public Builder
    1105 {
    1106 private:
    1107     Product *product;
    1108 public:
    1109     ConcreteBuilder2()
    1110     {
    1111         product = new Product();
    1112     }
    1113     virtual void builderA()
    1114     {
    1115         product->add("A");
    1116     }
    1117     virtual void builderB()
    1118     {
    1119         product->add("B");
    1120     }
    1121     virtual Product *getResult()
    1122     {
    1123         return product;
    1124     }
    1125 };
    1126 
    1127 class Director
    1128 {
    1129 private:
    1130     Product *p;
    1131 public:
    1132     void construct(Builder *bd)
    1133     {
    1134         bd->builderA();
    1135         bd->builderB();
    1136         p = bd->getResult();
    1137     }
    1138     Product *getResult()
    1139     {
    1140         return p;
    1141     }
    1142 };
    1143 
    1144 int main()
    1145 {
    1146     Director *director = new Director();
    1147 
    1148     Builder *bd1 = new ConcreteBuilder1();
    1149     director->construct(bd1);
    1150     Product *pbd1 = director->getResult();
    1151 
    1152     pbd1->show();
    1153 
    1154     return 0;
    1155 }
    1156 
    1157 // 观察者模式
    1158 
    1159 #include <iostream>
    1160 #include <string>
    1161 #include <list>
    1162 using namespace std;
    1163 
    1164 class Observer;
    1165 
    1166 class Subject
    1167 {
    1168 protected:
    1169     list<Observer*> observers;
    1170 public:
    1171     string action;
    1172 public:
    1173     virtual void attach(Observer*) = 0;
    1174     virtual void detach(Observer*) = 0;
    1175     virtual void notify() = 0;
    1176 };
    1177 
    1178 class Observer
    1179 {
    1180 protected:
    1181     string name;
    1182     Subject *sub;
    1183 public:
    1184     Observer(string name, Subject *sub)
    1185     {
    1186         this->name = name;
    1187         this->sub = sub;
    1188     }
    1189     string getName()
    1190     {
    1191         return name;
    1192     }
    1193     virtual void update() = 0;
    1194 };
    1195 
    1196 class StockObserver : public Observer
    1197 {
    1198 public:
    1199     StockObserver(string name, Subject *sub) : Observer(name, sub)
    1200     {
    1201     }
    1202     void update();
    1203 };
    1204 
    1205 void StockObserver::update()
    1206 {
    1207     cout << name << " 收到消息:" << sub->action << endl;
    1208     if (sub->action == "梁所长来了!")
    1209     {
    1210         cout << "我马上关闭股票,装做很认真工作的样子!" << endl;
    1211     }
    1212 }
    1213 
    1214 class NBAObserver : public Observer
    1215 {
    1216 public:
    1217     NBAObserver(string name, Subject *sub) : Observer(name, sub)
    1218     {
    1219     }
    1220     void update();
    1221 };
    1222 
    1223 void NBAObserver::update()
    1224 {
    1225     cout << name << " 收到消息:" << sub->action << endl;
    1226     if (sub->action == "梁所长来了!")
    1227     {
    1228         cout << "我马上关闭NBA,装做很认真工作的样子!" << endl;
    1229     }
    1230 }
    1231 
    1232 class Secretary : public Subject
    1233 {
    1234     void attach(Observer *observer)
    1235     {
    1236         observers.push_back(observer);
    1237     }
    1238     void detach(Observer *observer)
    1239     {
    1240         list<Observer *>::iterator iter = observers.begin();
    1241         while (iter != observers.end())
    1242         {
    1243             if ((*iter) == observer)
    1244             {
    1245                 cout << "erase:" << observer->getName() << endl;
    1246                 observers.erase(iter++);
    1247             }
    1248             else
    1249             {
    1250                 ++iter;
    1251             }
    1252         }
    1253     }
    1254     void notify()
    1255     {
    1256         list<Observer *>::iterator iter = observers.begin();
    1257         while (iter != observers.end())
    1258         {
    1259             (*iter)->update();
    1260             ++iter;
    1261         }
    1262     }
    1263 };
    1264 
    1265 
    1266 int main()
    1267 {
    1268     Subject *dwq = new Secretary();
    1269 
    1270     Observer *xs = new NBAObserver("xiaoshuai", dwq);
    1271     Observer *zy = new NBAObserver("zouyue", dwq);
    1272     Observer *lm = new StockObserver("limin", dwq);
    1273 
    1274     dwq->attach(xs);
    1275     dwq->attach(zy);
    1276     dwq->attach(lm);
    1277 
    1278     dwq->action = "去吃饭了!";
    1279     dwq->notify();
    1280     cout << endl;
    1281 
    1282     dwq->action = "梁所长来了!";
    1283     dwq->notify();
    1284 
    1285     dwq->detach(lm);
    1286     dwq->detach(zy);
    1287     dwq->detach(xs);
    1288 
    1289     return 0;
    1290 }
    1291 
    1292 #include <iostream>
    1293 #include <string>
    1294 using namespace std;
    1295 
    1296 class IUser
    1297 {
    1298 public:
    1299     virtual void getUser() = 0;
    1300     virtual void setUser() = 0;
    1301 };
    1302 
    1303 class SqlUser : public IUser
    1304 {
    1305 public:
    1306     void getUser()
    1307     {
    1308         cout << "在sql中返回user" << endl;
    1309     }
    1310     void setUser()
    1311     {
    1312         cout << "在sql中设置user" << endl;
    1313     }
    1314 };
    1315 
    1316 class AccessUser : public IUser
    1317 {
    1318 public:
    1319     void getUser()
    1320     {
    1321         cout << "在Access中返回user" << endl;
    1322     }
    1323     void setUser()
    1324     {
    1325         cout << "在Access中设置user" << endl;
    1326     }
    1327 };
    1328 
    1329 class IDepartment
    1330 {
    1331 public:
    1332     virtual void getDepartment() = 0;
    1333     virtual void setDepartment() = 0;
    1334 };
    1335 
    1336 class SqlDepartment : public IDepartment
    1337 {
    1338 public:
    1339     void getDepartment()
    1340     {
    1341         cout << "在sql中返回Department" << endl;
    1342     }
    1343     void setDepartment()
    1344     {
    1345         cout << "在sql中设置Department" << endl;
    1346     }
    1347 };
    1348 
    1349 class AccessDepartment : public IDepartment
    1350 {
    1351 public:
    1352     void getDepartment()
    1353     {
    1354         cout << "在Access中返回Department" << endl;
    1355     }
    1356     void setDepartment()
    1357     {
    1358         cout << "在Access中设置Department" << endl;
    1359     }
    1360 };
    1361 
    1362 class IFactory
    1363 {
    1364 public:
    1365     virtual IUser *createUser() = 0;
    1366     virtual IDepartment *createDepartment() = 0;
    1367 };
    1368 
    1369 class SqlFactory : public IFactory
    1370 {
    1371 public:
    1372     IUser *createUser() 
    1373     {
    1374         return new SqlUser();
    1375     }
    1376     IDepartment *createDepartment() 
    1377     {
    1378         return new SqlDepartment();
    1379     }
    1380 };
    1381 
    1382 class AccessFactory : public IFactory
    1383 {
    1384 public:
    1385     IUser *createUser()
    1386     {
    1387         return new AccessUser();
    1388     }
    1389     IDepartment *createDepartment() 
    1390     {
    1391         return new AccessDepartment();
    1392     }
    1393 };
    1394 
    1395 /*************************************************************/
    1396 
    1397 class DataAccess
    1398 {
    1399 private:
    1400     static string db;
    1401 public:
    1402     static IUser *createUser()
    1403     {
    1404         if (db == "access")
    1405         {
    1406             return new AccessUser();
    1407         }
    1408         else if (db == "sql")
    1409         {
    1410             return new SqlUser();
    1411         }
    1412     }
    1413     static IDepartment *createDepartment()
    1414     {
    1415         if (db == "access")
    1416         {
    1417             return new AccessDepartment();
    1418         }
    1419         else if (db == "sql")
    1420         {
    1421             return new SqlDepartment();
    1422         }    
    1423     }
    1424 };
    1425 
    1426 string DataAccess::db = "sql";
    1427 
    1428 /*************************************************************/
    1429 
    1430 int main()
    1431 {
    1432     IFactory *factory;
    1433     IUser *user;
    1434     IDepartment *department;
    1435 
    1436     factory = new AccessFactory();
    1437     user = factory->createUser();
    1438     department = factory->createDepartment();
    1439     
    1440     user->getUser();
    1441     user->setUser();
    1442     department->getDepartment();
    1443     department->setDepartment();
    1444 
    1445     user = DataAccess::createUser();
    1446     department = DataAccess::createDepartment();
    1447 
    1448     user->getUser();
    1449     user->setUser();
    1450     department->getDepartment();
    1451     department->setDepartment();
    1452 
    1453     return 0;
    1454 }
    1455 
    1456 #include <iostream>
    1457 #include <string>
    1458 using namespace std;
    1459 
    1460 class Work;
    1461 class State;
    1462 class ForenonnState;
    1463 
    1464 
    1465 class State
    1466 {
    1467 public:
    1468     virtual void writeProgram(Work*) = 0;
    1469 };
    1470 
    1471 class Work
    1472 {
    1473 public:
    1474     int hour;
    1475     State *current;
    1476     Work();
    1477     void writeProgram()
    1478     {
    1479         current->writeProgram(this);
    1480     }
    1481 };
    1482 
    1483 class EveningState : public State
    1484 {
    1485 public:
    1486     void writeProgram(Work *w)
    1487     {
    1488         cout << "当前时间: " << w->hour << "心情很好,在看《明朝那些事儿》,收获很大!" << endl;
    1489     }
    1490 };
    1491 
    1492 class AfternoonState : public State
    1493 {
    1494 public:
    1495     void writeProgram(Work *w)
    1496     {
    1497         if (w->hour < 19)
    1498         {
    1499             cout << "当前时间: " << w->hour << "下午午睡后,工作还是精神百倍!" << endl;
    1500         }
    1501         else
    1502         {
    1503             w->current = new EveningState();
    1504             w->writeProgram();
    1505         }
    1506     }
    1507 };
    1508 
    1509 class ForenonnState : public State
    1510 {
    1511 public:
    1512     void writeProgram(Work *w)
    1513     {
    1514         if (w->hour < 12)
    1515         {
    1516             cout << "当前时间: " << w->hour << "上午工作精神百倍!" << endl;
    1517         }
    1518         else
    1519         {
    1520             w->current = new AfternoonState();
    1521             w->writeProgram();
    1522         }
    1523     }
    1524 };
    1525 
    1526 Work::Work()
    1527 {
    1528     current = new ForenonnState();
    1529 }
    1530 
    1531 int main()
    1532 {
    1533     Work *w = new Work();
    1534     w->hour = 21;
    1535     w->writeProgram();
    1536     return 0;
    1537 }
    1538 //Reuslt:
    1539 //当前时间: 21心情很好,在看《明朝那些事儿》,收获很大!
    1540 
    1541 #include <iostream>
    1542 #include <string>
    1543 using namespace std;
    1544 
    1545 class Adaptee
    1546 {
    1547 public:
    1548     virtual void myRequest()
    1549     {
    1550         cout << "实际上的接口" << endl;
    1551     }
    1552 };
    1553 
    1554 class Target
    1555 {
    1556 public:
    1557     virtual void request() = 0;
    1558     virtual ~Target(){}
    1559 };
    1560 
    1561 class Adapter : public Target
    1562 {
    1563 private:
    1564     Adaptee adaptee;
    1565 public:
    1566     void request()
    1567     {
    1568         adaptee.myRequest();
    1569     }
    1570 };
    1571 
    1572 int main()
    1573 {
    1574     Target *target = new Adapter();
    1575     target->request();
    1576     delete target;
    1577     return 0;
    1578 }
    1579 //Result:
    1580 //实际上的接口
    1581 
    1582 #include <iostream>
    1583 #include <string>
    1584 using namespace std;
    1585 
    1586 class Player
    1587 {
    1588 public:
    1589     string name;
    1590     Player(string name)
    1591     {
    1592         this->name = name;
    1593     }
    1594     virtual void attack() = 0;
    1595     virtual void defence() = 0;
    1596 }; 
    1597 
    1598 class Forwards : public Player
    1599 {
    1600 public:
    1601     Forwards(string name) : Player(name){}
    1602     void attack()
    1603     {
    1604         cout << name << "前锋进攻" << endl;
    1605     }
    1606     void defence()
    1607     {
    1608         cout << name << "前锋防守" << endl;
    1609     }
    1610 };
    1611 
    1612 class Center : public Player
    1613 {
    1614 public:
    1615     Center(string name) : Player(name){}
    1616     void attack()
    1617     {
    1618         cout << name << "中锋进攻" << endl;
    1619     }
    1620     void defence()
    1621     {
    1622         cout << name << "中锋防守" << endl;
    1623     }
    1624 };
    1625 
    1626 class Backwards : public Player
    1627 {
    1628 public:
    1629     Backwards(string name) : Player(name){}
    1630     void attack()
    1631     {
    1632         cout << name << "后卫进攻" << endl;
    1633     }
    1634     void defence()
    1635     {
    1636         cout << name << "后卫防守" << endl;
    1637     }
    1638 };
    1639 /*****************************************************************/
    1640 class ForeignCenter
    1641 {
    1642 public:
    1643     string name;
    1644     ForeignCenter(string name)
    1645     {
    1646         this->name = name;
    1647     }
    1648     void myAttack()
    1649     {
    1650         cout << name << "外籍中锋进攻" << endl;
    1651     }
    1652     void myDefence()
    1653     {
    1654         cout << name << "外籍中锋防守" << endl;
    1655     }
    1656 };
    1657 /*****************************************************************/
    1658 class Translator : public Player
    1659 {
    1660 private:
    1661     ForeignCenter *fc;
    1662 public:
    1663     Translator(string name) : Player(name)
    1664     {
    1665         fc = new ForeignCenter(name); 
    1666     }
    1667     void attack()
    1668     {
    1669         fc->myAttack();
    1670     }
    1671     void defence()
    1672     {
    1673         fc->myDefence();
    1674     }
    1675 };
    1676 /*****************************************************************/
    1677 int main()
    1678 {
    1679     Player *p1 = new Center("李俊宏");
    1680     p1->attack();
    1681     p1->defence();
    1682     
    1683     Translator *tl = new Translator("姚明");
    1684     tl->attack();
    1685     tl->defence();
    1686     
    1687     return 0;
    1688 }
    1689 //Result:
    1690 /*
    1691 李俊宏中锋进攻
    1692 李俊宏中锋防守
    1693 姚明外籍中锋进攻
    1694 姚明外籍中锋防守
    1695 */
    1696 
    1697 
    1698 #include <iostream>
    1699 #include <string>
    1700 #include <vector>
    1701 using namespace std;
    1702 
    1703 class Memo
    1704 {
    1705 public:
    1706     string state;
    1707     Memo(string state)
    1708     {
    1709         this->state = state;
    1710     }
    1711 };
    1712 
    1713 class Originator
    1714 {
    1715 public:
    1716     string state;
    1717     void setMemo(Memo *memo)
    1718     {
    1719         state = memo->state;
    1720     }
    1721     Memo *createMemo()
    1722     {
    1723         return new Memo(state);
    1724     }
    1725     void show()
    1726     {
    1727         cout << state << endl;
    1728     }
    1729 };    
    1730 
    1731 class Caretaker
    1732 {
    1733 public:
    1734     vector<Memo *> memo;
    1735 public:
    1736     void save(Memo *memo)
    1737     {
    1738         (this->memo).push_back(memo);
    1739     }
    1740     Memo *getState(int i)
    1741     {
    1742         return memo[i];
    1743     }
    1744 };
    1745  
    1746 int main()
    1747 {
    1748     Originator *og = new Originator();
    1749     Caretaker *ct = new Caretaker(); 
    1750 
    1751     og->state = "on";
    1752     og->show();    
    1753     ct->save(og->createMemo());
    1754 
    1755     og->state = "off";
    1756     og->show();
    1757     ct->save(og->createMemo());
    1758 
    1759     og->state = "middle";
    1760     og->show();
    1761     ct->save(og->createMemo());
    1762 
    1763     og->setMemo( ct->getState(1) );
    1764     og->show();
    1765 
    1766     return 0;
    1767 }
    1768 //Result:
    1769 /*
    1770 on
    1771 off
    1772 middle
    1773 off
    1774 */
    1775 
    1776 #include <iostream>
    1777 #include <vector>
    1778 #include <string>
    1779 using namespace std;
    1780 
    1781 class Component
    1782 {
    1783 public:
    1784     string name;
    1785     Component(string name)
    1786     {
    1787         this->name = name;
    1788     }
    1789     virtual void add(Component *) = 0;
    1790     virtual void remove(Component *) = 0;
    1791     virtual void display(int) = 0;
    1792 };
    1793 
    1794 class Leaf : public Component
    1795 {
    1796 public:
    1797     Leaf(string name) : Component(name)
    1798     {}
    1799     void add(Component *c)
    1800     {
    1801         cout << "leaf cannot add" << endl;
    1802     }
    1803     void remove(Component *c)
    1804     {
    1805         cout << "leaf cannot remove" << endl;
    1806     }
    1807     void display(int depth)
    1808     {
    1809         string str(depth, '-');
    1810         str += name;
    1811         cout << str << endl;
    1812     }
    1813 };
    1814 
    1815 class Composite : public Component
    1816 {
    1817 private:
    1818     vector<Component*> component;
    1819 public:
    1820     Composite(string name) : Component(name)
    1821     {}
    1822     void add(Component *c)
    1823     {
    1824         component.push_back(c);
    1825     }
    1826     void remove(Component *c)
    1827     {
    1828         vector<Component*>::iterator iter = component.begin();
    1829         while (iter != component.end())
    1830         {
    1831             if (*iter == c)
    1832             {
    1833                 component.erase(iter++);
    1834             }
    1835             else
    1836             {
    1837                 iter++;
    1838             }
    1839         }
    1840     }
    1841     void display(int depth)
    1842     {
    1843         string str(depth, '-');
    1844         str += name;
    1845         cout << str << endl;
    1846 
    1847         vector<Component*>::iterator iter=component.begin();
    1848         while (iter != component.end())
    1849         {
    1850             (*iter)->display(depth + 2);
    1851             iter++;
    1852         }
    1853     }
    1854 };
    1855 
    1856 
    1857 int main()
    1858 {
    1859     Component *p = new Composite("小李"); 
    1860     p->add(new Leaf("小王"));
    1861     p->add(new Leaf("小强"));
    1862 
    1863     Component *sub = new Composite("小虎"); 
    1864     sub->add(new Leaf("小王"));
    1865     sub->add(new Leaf("小明"));
    1866     sub->add(new Leaf("小柳"));
    1867     
    1868     p->add(sub);
    1869     p->display(0);
    1870 
    1871     cout << "*******" << endl;
    1872     sub->display(2);
    1873 
    1874     return 0;
    1875 }
    1876 //Result:
    1877 /*
    1878 小李
    1879 --小王
    1880 --小强
    1881 --小虎
    1882 ----小王
    1883 ----小明
    1884 ----小柳
    1885 *******
    1886 --小虎
    1887 ----小王
    1888 ----小明
    1889 ----小柳
    1890 */
    1891 
    1892 #include <iostream>
    1893 #include <string>
    1894 using namespace std;
    1895 
    1896 class Iterator;
    1897 
    1898 class Aggregate
    1899 {
    1900 public:
    1901     virtual Iterator *createIterator() = 0;
    1902 };
    1903 
    1904 class Iterator
    1905 {
    1906 public:
    1907     virtual void first() = 0;
    1908     virtual void next() = 0;
    1909     virtual bool isDone() = 0;
    1910 };
    1911 
    1912 class ConcreteAggregate : public Iterator
    1913 {
    1914 public:
    1915     void first()
    1916     {}
    1917     void next()
    1918     {}
    1919     bool isDone()
    1920     {}
    1921 };
    1922 
    1923 int main()
    1924 {
    1925     return 0;
    1926 }
    1927 
    1928 #include <iostream>
    1929 #include <string>
    1930 using namespace std;
    1931 
    1932 class Singleton
    1933 {    
    1934 private:
    1935     int i;
    1936     static Singleton *instance;
    1937     Singleton(int i)
    1938     {
    1939         this->i = i;
    1940     }
    1941 public:
    1942     static Singleton *getInstance()
    1943     {
    1944         return instance;
    1945     }
    1946     void show()
    1947     { 
    1948         cout << i << endl;
    1949     }
    1950 };
    1951 
    1952 Singleton* Singleton::instance = new Singleton(8899); 
    1953 
    1954 class A : public Singleton
    1955 {
    1956 
    1957 };
    1958 
    1959 int main()
    1960 {
    1961     Singleton *s = Singleton::getInstance();
    1962     Singleton *s2 = A::getInstance();
    1963     cout << s << endl;
    1964     cout << s2 << endl;
    1965     cout << (s == s2) << endl;
    1966     return 0;
    1967 }
    1968 
    1969 #include <iostream>
    1970 #include <string>
    1971 using namespace std;
    1972 
    1973 class HandsetSoft
    1974 {
    1975 public:
    1976     virtual void run() = 0;
    1977 };
    1978 
    1979 class HandsetGame : public HandsetSoft
    1980 {
    1981 public:
    1982     void run()
    1983     {
    1984         cout << "运行手机游戏" << endl;
    1985     }
    1986 };
    1987 
    1988 class HandsetAddressList : public HandsetSoft
    1989 {
    1990 public:
    1991     void run()
    1992     {
    1993         cout << "运行手机通讯录" << endl;
    1994     }
    1995 };
    1996 
    1997 class HandsetBrand
    1998 {
    1999 protected:
    2000     HandsetSoft *soft;
    2001 public:
    2002     void setHandsetSoft(HandsetSoft *soft)
    2003     {
    2004         this->soft = soft;
    2005     }
    2006     virtual void run() = 0;
    2007 };
    2008 
    2009 class HandsetBrandN : public HandsetBrand
    2010 {
    2011 public:
    2012     void run()
    2013     {
    2014         soft->run();
    2015     }
    2016 };
    2017 
    2018 class HandsetBrandM : public HandsetBrand
    2019 {
    2020 public:
    2021     void run()
    2022     {
    2023         soft->run();
    2024     }
    2025 };
    2026 
    2027 int main()
    2028 {
    2029     HandsetBrand *hb;
    2030     hb = new HandsetBrandM();
    2031     
    2032     hb->setHandsetSoft(new HandsetGame());
    2033     hb->run();
    2034     hb->setHandsetSoft(new HandsetAddressList());
    2035     hb->run();
    2036 
    2037     return 0;
    2038 }
    2039 #endif
    2040 
    2041 #include <iostream>
    2042 #include <string>
    2043 #include <list>
    2044 
    2045 using namespace std;
    2046 
    2047 class Barbecuer
    2048 {
    2049 public:
    2050     void bakeMutton()
    2051     {
    2052         cout << "烤羊肉串" << endl;
    2053     }
    2054     void bakeChickenWing()
    2055     {
    2056         cout << "烤鸡翅" << endl;
    2057     }
    2058 };
    2059 
    2060 class Command
    2061 {
    2062 protected:
    2063     Barbecuer *receiver;
    2064 public:
    2065     Command(Barbecuer *receiver)
    2066     {
    2067         this->receiver = receiver;
    2068     }
    2069     virtual void executeCommand() = 0;
    2070 };
    2071 
    2072 class BakeMuttonCommand : public Command
    2073 {
    2074 public:
    2075     BakeMuttonCommand(Barbecuer *receiver) : Command(receiver)
    2076     {}
    2077     void executeCommand()
    2078     {
    2079         receiver->bakeMutton();
    2080     }
    2081 };
    2082 
    2083 class BakeChikenWingCommand : public Command
    2084 {
    2085 public:
    2086     BakeChikenWingCommand(Barbecuer *receiver) : Command(receiver)
    2087     {}
    2088     void executeCommand()
    2089     {
    2090         receiver->bakeChickenWing();
    2091     }
    2092 };
    2093 
    2094 class Waiter
    2095 {
    2096 private:
    2097     Command *command;
    2098 public:
    2099     void setOrder(Command *command)
    2100     {
    2101         this->command = command;
    2102     }
    2103     void notify()
    2104     {
    2105         command->executeCommand();
    2106     }
    2107 };
    2108 
    2109 class Waiter2
    2110 {
    2111 private:
    2112     list<Command*> orders;
    2113 public:
    2114     void setOrder(Command *command)
    2115     {
    2116         orders.push_back(command);
    2117     }
    2118     void cancelOrder(Command *command) 
    2119     {}
    2120     void notify()
    2121     {
    2122         list<Command*>::iterator iter = orders.begin();
    2123         while (iter != orders.end())
    2124         {
    2125             (*iter)->executeCommand();
    2126             iter++;
    2127         }
    2128     }
    2129 };
    2130 
    2131 
    2132 int main()
    2133 {
    2134     Barbecuer *boy = new Barbecuer();
    2135     Command *bm1 = new BakeMuttonCommand(boy);
    2136     Command *bm2 = new BakeMuttonCommand(boy);
    2137     Command *bc1 = new BakeChikenWingCommand(boy);
    2138     
    2139     cout << "Waiter2:" << endl;
    2140     Waiter2 *girl2 = new Waiter2();
    2141 
    2142     girl2->setOrder(bm1);
    2143      girl2->setOrder(bc1);
    2144      girl2->setOrder(bm2);
    2145     
    2146     girl2->notify();
    2147     
    2148     cout << "Waiter:" << endl;
    2149     Waiter *girl = new Waiter();
    2150 
    2151     girl->setOrder(bm1);
    2152     girl->notify();
    2153 
    2154     girl->setOrder(bm2);
    2155     girl->notify();
    2156 
    2157     girl->setOrder(bc1);
    2158     girl->notify();
    2159 
    2160     return 0;
    2161 }
    2162 //Result:
    2163 /*
    2164 Waiter2:
    2165 烤羊肉串
    2166 烤鸡翅
    2167 烤羊肉串
    2168 Waiter:
    2169 烤羊肉串
    2170 烤羊肉串
    2171 烤鸡翅
    2172 */
    View Code

     

    Good   Good   Study,  Day   Day  Up.

    顺序  选择  循环  总结

  • 相关阅读:
    ActiveForm
    phpstudy配置虚拟主机
    PHP 二分查找
    mysql group by 用法解析(详细)
    Linux(CentOS)下的apache服务器配置与管理
    ubuntu server sudo出现sudo:must be setuid root 完美解决办法
    VB连接MYSQL数据的方法
    mysql 远程登录及常用命令
    在eclipse上搭建Roku开发环境
    linux ps查进程 kill关闭进程
  • 原文地址:https://www.cnblogs.com/Braveliu/p/3956683.html
Copyright © 2011-2022 走看看