- Tạo ứng dụng Spring Boot bằng Spring Launchizr
- Cấu hình Cassandra trong Spring Boot
- Định cấu hình nhóm kết nối Tomcat trên Spring Boot
- Định tuyến tin nhắn Camel đến Artemis được nhúng bằng WildFly
Chế độ trang trí đề cập đến việc thêm một số chức năng bổ sung vào một đối tượng một cách linh hoạt và không xâm lấn mà không ảnh hưởng đến đối tượng ban đầu, chẳng hạn như câu lệnh I/O sau đây.
InpurStreamReader iReader = new inputStreamReader(new FileInputStream(new File("D:\abc.txt")));
Nếu D:\abc.txt được coi là một đối tượng được trang trí, các câu lệnh trên sẽ bao bọc đối tượng theo ba bước sau.
new File("D:\abc.txt") bao bọc đối tượng chuỗi thành một đối tượng Tệp. Lúc này, đối tượng Tệp chứa nội dung của chuỗi gốc.
FileInputStream(...) mới bao bọc đối tượng File thành một đối tượng FileinputStream Tại thời điểm này, FileInputStream chứa nội dung của đối tượng File gốc và chuỗi gốc.
new InputStreamReader(...) bao bọc đối tượng FileinputStream thành một đối tượng inputStreamReader. Tại thời điểm này, inputStreamReader chứa nội dung của đối tượng FileInputStream gốc, đối tượng File gốc và chuỗi gốc.
Có thể thấy rằng chế độ trang trí có thể cho phép đối tượng ban đầu được đóng gói nhiều lần và dần dần có các chức năng mạnh mẽ hơn. Do đó, trong quá trình phát triển, mỗi chức năng có thể được gói gọn theo mô-đun thông qua chế độ trang trí. Ví dụ: nếu bạn muốn thêm hàm X và Y vào đối tượng A theo trình tự, bạn chỉ cần bọc A hai lần. Chế độ trang trí này được sử dụng rộng rãi trong thiết kế I/O.
Chế độ trang trí bao gồm hai vai trò sau
1) Vai trò xây dựng trừu tượng (Thành phần)
Giao diện trừu tượng của đối tượng được trang trí. Sau đó, đối tượng có thể được trang trí động thông qua một bộ trang trí.
2) Vai trò thành phần bê tông (ConcreteComponent)
Một đối tượng cụ thể là một lớp triển khai được xây dựng một cách trừu tượng.
1) Người trang trí
Lớp trừu tượng trang trí cần kế thừa từ Component và được dùng để trang trí (mở rộng) các phương thức được định nghĩa trong Component. Về mặt cú pháp, đối tượng được trang trí chứa tham chiếu đến đối tượng thực.
2) Vai trò của Người trang trí bê tông: Người trang trí bê tông, tức là một lớp triển khai của vai trò trang trí.
Giao diện Phone được sử dụng để xác định chức năng cơ bản của điện thoại di động, đó là call(). Lớp BasePhone là một lớp triển khai của Phone và triển khai phương thức được xác định bởi call(). SmallPhone là công cụ trang trí Điện thoại giúp mở rộng chức năng của Điện thoại. Phương pháp trang trí đầu tiên là AISmartPhone, bổ sung chức năng "trí tuệ nhân tạo" cho điện thoại; phương pháp trang trí thứ hai là AutoSizeSmartPhone, bổ sung chức năng "tự động chia tỷ lệ" cho điện thoại.
a Vai trò xây dựng trừu tượng (Thành phần)
trình trang trí gói; // Vai trò thành phần trừu tượng (Thành phần) giao diện công cộng Điện thoại { void call();
b Thành phần bê tông (ConcreteComponent)
trình trang trí gói; // ConcreteComponent vai trò lớp công khai BasePhone triển khai Điện thoại { @Override public void call() { System.out.println("Call" } }
c Người trang trí
package trang trí; // Lớp trừu tượng công khai trang trí SmartPhone triển khai Điện thoại { điện thoại riêng; điện thoại công cộng (Điện thoại điện thoại) { super(); this.phone = phone } @Override public void call() { phone.call (); }
d Vai trò trang trí bê tông đầu tiên (ConcreteDecorator)
package trang trí; lớp công khai AISmartPhone mở rộng SmartPhone { public AISmartPhone(Phone phone) { super(phone); } // Thêm các chức năng mới cho điện thoại: trí tuệ nhân tạo public void aiFunction() { System.out.println("The phone has Artificial trí thông minh Các chức năng mạnh mẽ"); } public void call() { super.call(); aiFunction(); } }
e Vai trò trang trí bê tông đầu tiên (ConcreteDecorator)
trình trang trí gói; lớp công khai AutoSizeSmartPhone mở rộng SmartPhone { public AutoSizeSmartPhone(Phone phone) { super(phone); } // Thêm các tính năng mới cho điện thoại: tự động điều chỉnh kích thước điện thoại public void autoSize() { System.out.println("Mobile kích thước điện thoại Kích thước có thể được tự động thu nhỏ"); } public void call() { super.call(); autoSize(); } }
lớp kiểm tra f
trình trang trí gói; Kiểm tra lớp công khai { public static void main(String[] args) { //Chức năng điện thoại cơ bản System.out.println("--Chức năng điện thoại cơ bản--"); call(); // Điện thoại được trang bị AISmartPhone System.out.println("\n--Smartphone: Đã thêm chức năng AI--"); AISmartPhone = new AISmartPhone(basePhone); AISmartPhone.call(); // Điện thoại được trang trí bằng AutoSizeSmartPhone System.out.println("\n--Smartphone: Đã thêm chức năng tự động điều chỉnh tỷ lệ--"); ); autoSizeSmartPhone.call(); // Chiếc điện thoại sau khi được trang trí hai lần với AISmartPhone và AutoSizeSmartPhone System.out.println("\n--Smartphone: Đã thêm AI và chức năng tự động điều chỉnh tỷ lệ--"); smartPhone.call();
--Chức năng điện thoại cơ bản--Thực hiện cuộc gọi điện thoại--Điện thoại thông minh: Đã thêm chức năng AI--Thực hiện cuộc gọi điện thoại có chức năng mạnh mẽ của trí tuệ nhân tạo--Điện thoại thông minh: Thêm chức năng tự động mở rộng quy mô--Kích thước của điện thoại để thực hiện cuộc gọi có thể là Tự động chia tỷ lệ - Điện thoại thông minh: Đã thêm AI và chức năng tự động chia tỷ lệ - thực hiện cuộc gọi điện thoại với chức năng mạnh mẽ của trí tuệ nhân tạo. Kích thước của điện thoại có thể được tự động thu nhỏ. Quá trình kết thúc với mã thoát 0.
Điên cuồng vì điều này, có điều gì đó thực sự đang thiếu. Tôi có webpack 4.6.0, webpack-cli^2.1.2, nên đã cập nhật. Trong tài liệu (https://webpack.js.org/concepts/mod
đối tượng Máy chủ "os.google.com" { nhập địa chỉ "windows" = "linux.google.com" nhóm = ["linux"] } obj
Bất cứ khi nào tôi cài đặt ứng dụng của mình, tôi có thể sao chép cơ sở dữ liệu từ thư mục Nội dung sang /data/data/packagename/databases/. Nhưng sau 10 hoặc 15 giây
Tôi đang sử dụng Hideshow.el trong bộ đệm chế độ cc để thu gọn các phần của tệp mà tôi không xem. Sẽ thật tuyệt nếu có thể thực hiện điều này trong một tài liệu XML. Tôi đang sử dụng emacs 22.2.1 và chế độ sgml tích hợp cho xm
Đã kết thúc. Câu hỏi này không tuân thủ các nguyên tắc của Stack Overflow. Hiện tại, nó không chấp nhận câu trả lời. Chúng tôi không cho phép đặt câu hỏi về đề xuất sách, công cụ, thư viện phần mềm, v.v. Bạn có thể chỉnh sửa câu hỏi của mình để trả lời bằng sự kiện và trích dẫn. đóng cửa
Theo java: public Scanner useDelimiter(String sample) Đặt mẫu phân định của máy quét này thành một patt
Tôi đã đọc một số bài viết về mẫu PRG và cách nó ngăn người dùng gửi lại biểu mẫu. Ví dụ: bài đăng này có hình ảnh đẹp: Tôi có thể hiểu tại sao việc gửi biểu mẫu không xảy ra khi người dùng làm mới trang sau khi nhận được 2xx. Nhưng tôi vẫn muốn biết: (1) Nếu
Hãy nhìn vào bức hình dưới đây bạn sẽ thấy rõ điều này. Vậy làm cách nào tôi có thể triển khai bộ chọn ngày quay vòng mà không có bất kỳ cửa sổ bật lên/hộp thoại/phương thức nào trong một màn hình đơn giản với một số Chế độ xem khác? Tôi đã tìm kiếm khắp nơi trên web nhưng không tìm thấy bất cứ điều gì phù hợp liên quan đến việc này
Tôi không biết phải làm gì và tôi tiếp tục gặp vấn đề. Sau đây là mã: row = int(input()) for i in range(1,rows): for j in range(1,i+1):
Tôi muốn tạo một biểu thức chính quy để viết lại. Viết lại tất cả các yêu cầu vào index.php (không cần khớp) không bắt đầu bằng /api hoặc không kết thúc bằng ('.html' hoặc '.js' hoặc '.css' hoặc '.png') Của tôi Ví dụ vẫn như cũ
Mẫu MVC là viết tắt của Model-View-Controller (Model-View-Controller). Mẫu MVC được sử dụng để phát triển các ứng dụng theo cấp bậc Model (model) - mô hình đại diện cho một đối tượng hoặc JAVA PO truy cập dữ liệu.
Tôi muốn tạo một thế giới lược đồ RDF cho lược đồ tổ chức. Như bạn có thể đã biết, các tài liệu Sơ đồ tổ chức dựa trên sơ đồ phân cấp, trong đó các tiêu đề là các thực thể nhóm chính. * Phụ trợ tháng 3 :THUỘC TÍNH: :HLEVEL: 1 :E
Tôi đang viết một phần mềm có thể đọc dữ liệu JSON từ một tệp. Tệp chứa "người" - một đối tượng có giá trị là một mảng các đối tượng. Tôi dự định sử dụng thư viện xác thực lược đồ JSON để xác thực nội dung thay vì tự viết mã. Tuân thủ JSON biểu thị dữ liệu sau
Giả sử tôi có 4 bảng gồm người, nhóm công ty và hóa đơn. Bây giờ có mối quan hệ nhiều-nhiều giữa hóa đơn/người và hóa đơn/công ty và hóa đơn/nhóm. Tôi thấy 4 mẫu sql có thể
Giả sử bạn có một tài liệu như thế này: doc1: id:1 text: ... tham khảo: Journal1, 2013, trang 123 tài liệu tham khảo: Journal2, 2014,
Tôi có kiến trúc này. Nó kiểm tra các bình luận và hiện đang hoạt động tốt. lược đồ var = { id: '', gõ: 'đối tượng', thuộc tính bổ sung: sai, chuyên nghiệp
Điều này có lẽ đơn giản, nhưng ai đó có thể giải thích tại sao việc khớp mẫu sau đây là không khôn ngoan? Nó báo các quy tắc khác như 1, 0, _ sẽ không bao giờ khớp. let matchTest(n : int) = let run = new Rand
Tôi có trình tự lựa chọn sau đây như một phần của lược đồ XML. Lý tưởng nhất là tôi muốn một chuỗi: các phần tử từ my:namespace phải được phân tích cú pháp nghiêm ngặt. Các phần tử từ bất kỳ không gian tên nào khác, ngoại trừ ##targetNamespace và
Tôi hy vọng có thể viết một lược đồ json bao gồm ví dụ (được đơn giản hóa) này { "errorMessage": "", "nbRunningQueries": 0, "isError": Fals
Trước hết, tôi mới làm quen với F# nên có thể câu trả lời là hiển nhiên nhưng tôi không thấy. Vì vậy, tôi có một số bộ dữ liệu có id và giá trị. Tôi biết id tôi đang tìm và tôi muốn chọn đúng bộ dữ liệu trong số ba bộ dữ liệu tôi chuyển vào. Tôi sẽ làm điều này bằng cách sử dụng hai câu lệnh so khớp
Tôi là một lập trình viên xuất sắc, rất giỏi!