THẢO LUẬN

Rât hay và đang hóng tập tiếp theo của bài viết này 😃

0
Aug 9th, 2016 7:53 a.m.

Giả sử version của trò chơi. Human, Monster, có nhiều level

Trong human khi Human hit Monster ta gọi hàm monster.acept(skillA);

skillA.visit(dogie) {degie.dagamed(hp)}
skillA.visit(dracula) {dracula.dagamed(hp)}

vay Skill la visitor; Human level 10 thì skill = Skill(10)

con Moster là element; Moster level 10 thì hp = congThuc()

skillA.visit(dogie) {degie.dagamed(congthuc(dogie.getLevel))}
skillA.visit(dracula) {dracula.dagamed(congthuc(dogie.getLevel))}

Khi bạn thêm Moster mới hay Human mới hay Skill mới thì chỉ ảnh hưởng tới lớp visitor mà không tác động nhiều tới Human hay Moster [định nghĩa các thao tác(level, hp) trên một tập hợp các đối tượng (moster) không đồng nhất (dracula, dogie) mà không làm thay đổi định nghĩa về lớp(Moster) của các đối tượng đó]

Đơn giản hơn Human dáng một Skill "dáng long thập bát chưởng" về phía con Moster (new Skill()), Moster không kịp né và nhận ngay đòn ấy (Moster.accept(skill)), và Skill này phá vỡ lớp áo giáp sau đó đánh thẳng vào huyệt đạo làm đứt đoạn mạch máu của Moster và làm Moster tổn thương nghiêm trọng (skill.visit()). Mai một Human học được thêm kĩ năng mới thì moster vận thế chỉ Skill.visit() là thay đổi

class Warrior implement Human {
    int level = 10;
    void hit(Moster moster) {
        for(int i = 0; i < 1000 ; i ++) {
            moster.accept(new DangLongThapBatChuong(level));
        }
    }
}

class Dogie implement Moster {
    int level;    
    public void accept(Skill dltbc) {    
       dltbc.visit(this);   
    }

    public void dagamed(int hp) {
      System.out.println("Owie! I lost " + hp + "hp ᙙᙖ");
    }
    public int getLevel() {
        return level;
    }
}

class DangLongThapBatChuong implement Skill {
    int level;
    public DangLongThapBatChuong(int lv) {
        level = lv;
    }
    visit(Dogie dogie) {
       System.out.println("Dang long thap bat chuong :v :v ");
       dogie.dagamed((lv + 100 - degie.getLevel())* 10);
   }
}

(Mình viết sấu quá, mong ai có tâp edit lại giùm, xin cảm ơn!)

0

Nhiều đoạn đọc thấy khó hiểu quá, câu văn lủng củng ... ví dụ "Làm thế nào kiên cường làm bạn cần công việc của bạn là để thất bại? Làm thế nào nhiều thêm phụ thuộc được bạn thoải mái thêm vào hệ thống của bạn? Làm thế nào nhiều sự hỗ trợ nào bạn nghĩ rằng bạn có thể yêu cầu trong tương lai? Làm thế nào có liên quan là bạn về việc chia sẻ tài nguyên với các ứng dụng hiện tại của bạn? Làm thế nào ổn định bạn có yêu cầu API được? Bạn có cần 'cao cấp' các tính năng như tốc độ giới hạn, trạm trộn, vv? Dưới đây là một bảng đơn giản so sánh từng trong những khuôn khổ, chúng tôi đã đề cập trong một số lĩnh vực quan trọng: " thế này thì hiểu sao được?

0
Avatar
đã bình luận cho bài viết
Aug 8th, 2016 11:45 p.m.

Bài này giải thích rất rõ ràng, phải chăng đây là một trong những chìa khóa thành công của các doanh nghiệp Nhật.

0
Aug 8th, 2016 11:40 p.m.

Bài này rất hữu ích anh ạ, nhưng tiếc là em chưa được deploy thử lần nào.

0

Mình thấy mấy từ này để tiếng anh dễ hiểu hơn tiếng việt. Và có một số từ ở trên khi dịch sang tiếng việt như cậu sẽ không ổn.

インターネット Internet Liên mạng インターフェース Interface Giao diện ウェブ Web Lưới, mạng lưới エンドユーザ End user Người dùng trực tiếp リリース (する) Release Giải phóng, giải thoát マイルストーン Milestone Mốc lịch sử ゴール Goal Bộ luật クラス Class Tầng lớp カテゴリー Category Phạm trù, hạng mục

0

Mình cũng đang như bạn nè về cả nghề nghiệp lẫn định hướng. Nếu có cơ hội trao đổi thêm thì tốt quá, nếu được bạn add nick skype mình nhé. //vensorah//

0

Mọi người thử AZGram nhé. chat. gọi điện, gọi video, gọi tới số điện thoại. http://www.azgram.com/download/

0
Aug 8th, 2016 7:41 a.m.

bug.jpg

Mình build bị lỗi này bạn giúp mình với ..Thanks!

0
Aug 6th, 2016 2:00 a.m.

lần sau anh có thể giải thích qua mấy cái định nghĩa . ví dụ ở cái giải thích uv ấy anh nói qua nó là gì rồi đưa link chi tiết chứ em đọc đang máu thì lại phải quay ra tìm hiểu uv nó là cái gì .

0
<h4> awesome posts! <h4>
0
Aug 4th, 2016 11:42 p.m.

love u

0
Aug 4th, 2016 12:49 a.m.

@pham ky khoi Thanks 😃

0
Avatar
đã bình luận cho bài viết
Aug 2nd, 2016 5:42 a.m.

STL có phải là standard template library phải ko ạ, standard library của C++ phải ko ạ 😃

0
Aug 2nd, 2016 5:12 a.m.

@helix

Bạn có thể nói rõ hơn ví dụ của mình có điểm nào chưa đúng nhỉ?

Tham khảo UML từ wiki:

Visitor pattern UML

Như vậy ở ví dụ của mình Human sẽ đóng vai trò là Element, method hit đóng vai trò như accept.

Từ đó, ConcreteElement sẽ gồm có Warrior, Wizzard

Visitor trong ví dụ này sẽ làMonster, interface này cần có các method visit tương ứng với từng ConcereteElement, chính là các method hitBy đó vậy

0

Bạn hãy kiểm tra xem bạn có load đống ảnh kia trên main thread ko nhé, nếu là trên main thì cần phải để nó dưới backgroud, các tiến trình không cập nhật UI mà để trên main sẽ lock thao tác sử dụng, hãy cẩn thận vấn đề này.

0
Aug 1st, 2016 7:02 a.m.

theo tôi thấy ví dụ của tác giả chưa thực sự đúng với mục tiêu của pattern này.ngay từ việc có 2 interface cho 2 đối tượng chính

0
Aug 1st, 2016 1:34 a.m.

Nice profile pic vai. Also, nice article (y)

0
Avatar
đã bình luận cho bài viết
Jul 31st, 2016 5:01 p.m.

(good)

0

Ra nhiều bài nữa Minh nhé. Có thời gian tớ sẽ tìm hiểu cái này 😄 Dạo này bận quá

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí