class ShapeFactory extends AbstractFactory
{
public function getShape($type)
{
switch ($type) {
case Shape::SQUARE:
return new Square;
break;
case Shape::CIRCLE:
return new Circle;
break;
case Shape::RECTANGLE:
return new Rectangle;
break;
default:
return nullbreak;
}
return null;
}
function getColor($color)
{
// TODO: Implement getColor() method.
return null;
}
}
class ColorFactory extends AbstractFactory
{
public function getColor($color) {
switch (strtolower($color)) {
case 'red':
return new Red();
break;
case 'blue':
return new Blue();
break;
case 'green':
return new Green();
break;
default:
return null
break;
}
return null;
}
function getShape($shape)
{
// TODO: Implement getShape() method.
return null;
}
}
Phần create, update, delete mình có cho ý tưởng ở phần dưới của bài viết. Mình để các bạn tự thiết kế và sáng tạo cho phần đó. Nếu là một tác phẩm truyền hình thì đây gọi là kết thúc mở bạn ạ. Hehe...
THẢO LUẬN
hay
cảm ơn nha. cái này là học hỏi từ bài của em đó
bài viết rất hay
upvote cho tác giả nhé
What an interesting article, thank for sharing
Uk. Mình có thấy nói. Mình tham khảo link bạn đưa mà vẫn ko thành công.
CryptoSwift vừa encrypt vừa decrypt được em nhé, miễn là encrypt bằng key salt nào thì phải decrypt bằng đúng key ấy là được.
ahihi =))
anh toàn bắt lỗi em thôi
em sửa lại rồi đó
cảm ơn em nhé =))
Phần create, update, delete mình có cho ý tưởng ở phần dưới của bài viết. Mình để các bạn tự thiết kế và sáng tạo cho phần đó. Nếu là một tác phẩm truyền hình thì đây gọi là kết thúc mở bạn ạ. Hehe...
Bài viết thật tâm huyết.
Bài viết khá hay nhưng mình nghĩ bạn nên viết thêm phần xóa cache lúc update,delete nữa. Nếu chỉ làm phần lưu cache thế này những trường có cache time dài lúc update thông tin sẽ bị sai lệch
CryptoSwift thằng này có decode được k anh ??? Hay cũng là dạng mã hoá k decode đc?
Ôki bạn
bài viết bắt trend tốt ghê
Containerls là gì thế ạ (bow)
trong block code thì bạn có thể thêm tên ngôn ngữ bên cạnh ``` để có thể highlight code dễ nhìn hơn nhé