Nếu bạn đang có nhu cầu đi với một cách tiếp cận mạnh mẽ hơn và kiểm chứng, bạn có thể sử dụng kết hợp các lớp và mẫu nhà máy để phát hành đối tượng. Kiểm tra những điều sau, bạn sẽ thấy rằng với thiết lập này, bao gồm logic chi tiết hơn và thử nghiệm xuống con đường sẽ trở nên dễ dàng hơn và đủ khả năng bạn linh hoạt hơn. Bạn cũng đang trừu tượng hóa việc tự tìm đối tượng mới sau cuộc gọi .issue
- điều này có thể mang lại lợi ích và thuận tiện trong một số trường hợp.
Tôi cũng lưu ý rằng bạn đề cập đến nền PHP của bạn, vì vậy tôi cũng giới thiệu một chút về cách tiếp cận đối tượng được định hướng có thể được thực hiện trong ES6.
class AbstractShape {
constructor(type) {
this.type = type;
}
getType() {
console.log(`I am a ${this.type}`);
}
}
class Square extends AbstractShape {
constructor(type) {
super(type);
this.sides = 4;
}
getDescription() {
console.log(`I have ${this.sides} equal sides`);
}
}
class ShapeFactory {
static issue(type) {
switch(type) {
case 'Square': return new Square(type);
break;
case 'Circle': /* same pattern with a Circle class */
break;
}
}
}
let shape = ShapeFactory.issue('Square');
shape.getType(); /* I am a Square */
shape.getDescription(); /* I have 4 equal sides */
JSFiddle Link - bản demo
Hơn nữa, nếu bạn muốn một cái gì đó một chút lỗi hơn khoan dung hơn đối phó với chuỗi thừa ví dụ 'Square'
- there are some creative ways để tận dụng các phương pháp giống như enum có thể tinh chỉnh điều này hơn nữa. Tôi sẽ lưu bất động sản ở đây và không băm nhỏ đoạn mã, nhưng sẽ bao gồm một fiddle cho bạn để kiểm tra.
JSFiddle Link - enum cách tiếp cận bản demo
giống như gọi 'Quảng trường mới()' – zabusa