01/10/2018, 08:20
Cách tạo một đối tượng khi chưa biết kiểu
Ở đây mình có bài toán thế này.
class Animal {
public static legsNum: Number;
public name: String;
constructor(name:String) {
this.name = name;
}
hi() {
console.log('My name is ' + name);
}
}
class Cat extends Animal {
public static legsNum = 4;
hi() {
super.say();
console.log('Tao la con meo!');
}
}
class Chicken extends Animal {
public static legsNum = 2;
hi() {
super.say();
console.log('Tao la con ga!');
}
}
/*
Đầu vào là một số con vật gồm mèo và gà nhưng mình chưa phân biệt được, chỉ biết số chân và tên của nó.
Bây giờ cần tạo ra danh sách các động vật đó và sau đó cho nó giới thiệu hi() theo cách của nó.
Input:
1) name: 'Minh', legsNum: 4 (Animal)
1) name: 'Qúy', legsNum: 2 (Animal)
Output:
My name is Minh, Tao la con meo!
My name is Qúy, Tao la con ga!
*/
Mình mong muốn là sau khi thêm bất cứ 1 con vật khác có số chân khác nhau thì không cần phải sửa đến Animal.
Bài liên quan
abstract nhé:
(Mình không biết dùng Java nên dùng C#, không biết có tác dụng không…)
Kết quả:
Hi Tu TV.
Theo ý kiến của mình thì việc đặt số chân là static là không hợp lý.
Vì con gà có 1 chân hoặc con mèo 2 chân cũng được.
Ý của mình ở đây là mình có input là 1 Animal biết số chân (legsNum) và tên riêng (name) của nó. Bây giờ làm thế nào để tạo ra Cat hay Chicken còn static ko thấy hợp lý thì bạn có thể sửa tùy ý sao cho đúng mục đích là đc
Hi Tu TV.
Không thể nói “sửa tùy ý sao cho đúng mục đích là đc”.
Lập trình khá giống toán không thể tùy tiện mà cần phải phù hợp logic.
Còn vấn đề của bạn có thể tham khảo từ khóa “factory pattern trong java”.
Thank @Phong_Ky_Vo. Chính là
factory pattern
, đúng thứ mình cần rồiMình thấy khi thêm 1 con vật nếu dùng factory pattern thì vẫn sửa lại phương thức khởi tạo sub class của Class Animals mà
Hi Xuân Giang.
Cái đó phụ thưộc vào yêu cầu bài toán và thiết kế lớp cha như nào.