java學習

          java學習

           

          設計模式之訪問者模式

          訪問者模式主要是將很多操作都在一個接口中聲明,在接口的實現類中都要實現這些操作,
          在具體的訪問者類中規定了需要調用實現類的哪個方法,
          例子如下:
          訪問者接口:
          public interface Visitor {
          public void visitString(StringElement stringE);
              
              public void visitFloat(FloatElement floatE);
              
              public void visitCollection(Collection<?> collection);
              public void visitInt(IntElement inte);

          }
          訪問者接口實現類
          public class ConcreteVisitor implements Visitor{
              public void visitCollection(Collection<?> collection) {
                  Iterator<?> iterator = collection.iterator();
                  while (iterator.hasNext()) {
                      Object o = iterator.next();
                      if (o instanceof Visitable) {
                          ((Visitable)o).accept(this);
                      }
                  }
              }

              public void visitFloat(FloatElement floatE) {
                  System.out.println(floatE.getFe());
              }

              public void visitString(StringElement stringE) {
                  System.out.println(stringE.getSe());
              }

              @Override
              public void visitInt(IntElement inte) {
                  System.out.println(inte.getInts());
                  
              }

          }
          操作類的接口:

          public interface Visitable {
               public void accept(Visitor visitor);

          }
          操作類的具體實現類:
          public class FloatElement implements Visitable{
          private Float fe;
              
              public FloatElement(Float fe) {
                  this.fe = fe;
              }
              
              public Float getFe() {
                  return this.fe;
              }
              
              public void accept(Visitor visitor) {
                  visitor.visitFloat(this);
              }

          }
          public class IntElement implements Visitable{
              private int ints;

              public int getInts() {
                  return ints;
              }

              public IntElement(int i){
                  this.ints = i;
              }

              @Override
              public void accept(Visitor visitor) {
                  visitor.visitInt(this);
                  
              }

          }
          public class StringElement implements Visitable{
          private String se;
              
              public StringElement(String se) {
                  this.se = se;
              }
              
              public String getSe() {
                  return this.se;
              }
              
              public void accept(Visitor visitor) {
                  visitor.visitString(this);
              }

          }
          測試類:
          public class Test {
              public static void main(String[] args) {
                  Visitor visitor = new ConcreteVisitor();
                  Visitable se = new StringElement("abc");
                  se.accept(visitor);
                  
                  Visitable fe = new FloatElement(new Float(1.5));
                  fe.accept(visitor);
                  System.out.println("===========");
                  List<Visitable> result = new ArrayList<Visitable>();
                  result.add(new StringElement("abc"));
                  result.add(new StringElement("abc"));
                  result.add(new StringElement("abc"));
                  result.add(new FloatElement(new Float(1.5)));
                  result.add(new FloatElement(new Float(1.5)));
                  result.add(new FloatElement(new Float(1.5)));
                  visitor.visitCollection(result);
                  Visitable is = new IntElement(2);
                  is.accept(visitor);
              }

          }

          posted @ 2013-04-18 16:20 楊軍威 閱讀(199) | 評論 (0)編輯 收藏

          設計模式之模板模式

          概述:
          定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。
          TemplateMethod使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
          適用性:
          1.一次性實現一個算法的不變的部分,并將可變的行為留給子類來實現。

              2.各子類中公共的行為應被提取出來并集中到一個公共父類中以避免代碼重復。
                首先識別現有代碼中的不同之處,并且將不同之處分離為新的操作。
                最后,用一個調用這些新的操作的模板方法來替換這些不同的代碼。
          例子如下:模板類:
          public abstract class Template {
               public abstract void print();
                  
                  public void update() {
                      System.out.println("公共的代碼");
                     System.out.println("下面是子類各自實現的代碼");
                          print();
                      
                  }
          }
          模板類的子類:
          public class TemplateConcrete extends Template{
                @Override
                  public void print() {
                      System.out.println("這是子類的實現");
                  }

          }
          測試類
          public class Test {
              public static void main(String[] args) {
                  Template temp = new TemplateConcrete();
                  temp.update();
              }

          }

          posted @ 2013-04-18 16:04 楊軍威 閱讀(141) | 評論 (0)編輯 收藏

          extjs中為表格添加單選行單元格的事件

          grid.addListener('cellclick', cellclick);
           function cellclick(grid, rowIndex, columnIndex, e) {
            var record = grid.getStore().getAt(rowIndex);
            var fieldName = grid.getColumnModel().getDataIndex(columnIndex);
            var data = record.get(fieldName);
            if(data==null){ //處理預覽 
             var alias=record.get("Alias");
             window.open(url);
             //window.location.href="DoIpcammera?dowith=preview&&alias="+alias;
            }
           }

          posted @ 2013-04-18 15:06 楊軍威 閱讀(443) | 評論 (0)編輯 收藏

          extjs自動生成排序數組

          new Ext.grid.RowNumberer()

          posted @ 2013-04-18 15:00 楊軍威 閱讀(241) | 評論 (0)編輯 收藏

          extjs中單選Radio的使用

          var AddtoobarT = new Ext.form.Radio({
                  name : "istoobar",//后臺接受的名稱
                  inputValue : "true",//傳后臺的值
                  boxLabel : "有",//頁面顯示的值
                  checked : true//默認選擇的值
                 });
                 var AddtoobarF = new Ext.form.Radio({
                  name : "istoobar",
                  inputValue : "false",
                  boxLabel : "沒有"
                 });
                 var Addtoobar = new Ext.form.RadioGroup({
                  name : "toolbar",
                  fieldLabel : "有無工具欄",
                  items : [ AddtoobarT, AddtoobarF ],
                  width : 200
                 });

          posted @ 2013-04-18 14:57 楊軍威 閱讀(568) | 評論 (0)編輯 收藏

          設計模式之職責鏈模式

          職責鏈模式規定了一個請求,這個請求需要特定的對象去處理,當把這個請求交個一個對象,但是這個對象不負責處理這個請求,可以動態地交給其他對象處理,直到交給對的對象處理,這些對象都有處理請求的機會,只有當請求是該自己負責的時候才處理,否則交給其他對象。

          下面以==============

          要離職, 人事審批!

          請求完畢

          ===========

          要加薪, 項目經理審批!

          ========

          要請假, 項目組長審批!

          的規定,寫一個職責鏈模式的例子:

          這是所有請求的接口

          public interface Request {

          void getRequest();

          }

          請假的請求實現類

          public class LeaveRequest implements Request{

          @Override

          public void getRequest() {

          System.out.println("leave");

          }

          }

          離職的請求實現類

          public class DimissionRequest implements Request{

          @Override

          public void getRequest() {

          System.out.println("dimission");

          }

          }

          加薪的請求實現類

          public class AddMoneyRequest implements Request{

          @Override

          public void getRequest() {

          System.out.println("add money");

          }

          }

          處理請求的接口

          public interface RequestHandle {

          void handleRequest(Request request);

          }

          Hr處理離職的請求

          public class HRRequestHandle implements RequestHandle{

          public void handleRequest(Request request) {

                  if (request instanceof DimissionRequest) {

                      System.out.println("要離職, 人事審批!");

                  } 

                  System.out.println("請求完畢");

              }

          }

          組長處理請假的請求

          public class TLRequestHandle implements RequestHandle{

          RequestHandle rh;

              

              public TLRequestHandle(RequestHandle rh) {

                  this.rh = rh;

              }

              public void handleRequest(Request request) {

                  if (request instanceof LeaveRequest) {

                      System.out.println("要請假, 項目組長審批!");

                  } else {

                      rh.handleRequest(request);

                  }

              }

          }

          經理處理加薪的請求

          public class PMRequestHandle implements RequestHandle{

          RequestHandle rh;

          public PMRequestHandle(RequestHandle rh) {

              this.rh = rh;

          }

          public void handleRequest(Request request) {

              if (request instanceof AddMoneyRequest) {

                  System.out.println("要加薪, 項目經理審批!");

              } else {

                  rh.handleRequest(request);

              }

          }

          }

          測試類

          public class Test {

          public static void main(String[] args) {

          //先把所有的處理請求的對象組成職責鏈

                  RequestHandle hr = new HRRequestHandle();

                  RequestHandle tl = new TLRequestHandle(hr);//組長

                  RequestHandle pm = new PMRequestHandle(tl);//經理

                

                  Request dimissionRequest = new DimissionRequest();

                  Request addMoneyRequest = new AddMoneyRequest();

                  Request  leaveRequest = new LeaveRequest();

                  System.out.println("==============");

                  //人事處理離職請求

                  

                  pm.handleRequest(dimissionRequest);

                  

                  System.out.println("===========");

                  //經理處理加薪請求

                

                  pm.handleRequest(addMoneyRequest);

                  

                  System.out.println("========");

                  //項目組長處理請假請求

                 

                  pm.handleRequest(leaveRequest);

              }

          }



          在使用時要調用最高級的職責調用者,由他去負責往下分配職責

          posted @ 2013-04-17 14:29 楊軍威 閱讀(183) | 評論 (0)編輯 收藏

          mysql中is null和=null的含義

          is null是判斷某個字段是否是空,為空并不等價于空字符串或者數字0
          =null  是判斷某個值是否等于null,null=null,和null<>null都是false

          posted @ 2013-04-16 13:32 楊軍威 閱讀(1649) | 評論 (0)編輯 收藏

          mysql查詢去除重復數據DISTINCT

          select DISTINCT job   from emp where deptno=20

          posted @ 2013-04-16 13:14 楊軍威 閱讀(375) | 評論 (0)編輯 收藏

          mysql函數中upper()的意思和排除空值

          select name from user where upper(name) ='TOM' and sal is not null;
          upper()函數的作用是把表中的name轉換成大寫再做比較

          posted @ 2013-04-16 13:05 楊軍威 閱讀(424) | 評論 (0)編輯 收藏

          mysql求數值列的和,其中一列可能是空

          求薪金sal列和績效comm列的和,comm可能是空,
          select sal+if(comm is null,0,comm) from emp;
          當comm是空時,返回0,不空時返回comm的數值

          posted @ 2013-04-16 11:12 楊軍威 閱讀(267) | 評論 (0)編輯 收藏

          僅列出標題
          共43頁: First 上一頁 21 22 23 24 25 26 27 28 29 下一頁 Last 

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 侯马市| 巧家县| 当雄县| 晋宁县| 仲巴县| 晋中市| 南召县| 徐汇区| 东平县| 永城市| 比如县| 贵南县| 涿州市| 柳林县| 定兴县| 武强县| 兰溪市| 姜堰市| 廊坊市| 华阴市| 城口县| 苏尼特左旗| 从化市| 昌乐县| 莫力| 上杭县| 隆德县| 屯昌县| 博野县| 黄冈市| 浑源县| 上饶县| 元谋县| 新巴尔虎右旗| 丰宁| 平定县| 茶陵县| 长宁县| 福贡县| 渭南市| 岚皋县|