Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cauadesa/pizzeriawithpatterns-deoo3

Pizzeria project easily implementing Proxy, Composite, Factory and Singleton.
https://github.com/cauadesa/pizzeriawithpatterns-deoo3

composite-pattern design-patterns factory-pattern java proxy-pattern

Last synced: about 2 months ago
JSON representation

Pizzeria project easily implementing Proxy, Composite, Factory and Singleton.

Awesome Lists containing this project

README

        

# Pizzeria With Patterns Project

Simple pizzeria design system, where two types of users interact (Customers placing orders and Administrators managing orders).
The system has access levels through the Pattern Proxy, where the administrators' credentials are required to perform most of the functions (except creation of new administrators).

Also using the Composite design pattern, through which it becomes possible to nest orders. Drinks as simple objects and Pizzas being composed of flavors.

Additionally, it has a simple implementation of the Factory design pattern, used for the creation of Administrators and Customers users.

## Classes Diagram

(Link to higher quality image)
[Classes diagram link](https://viewer.diagrams.net/?tags=%7B%7D&lightbox=1&highlight=0000ff&edit=_blank&layers=1&nav=1&title=PizzeriaWithPattern.drawio#R%3Cmxfile%3E%3Cdiagram%20id%3D%22C5RBs43oDa-KdzZeNtuy%22%20name%3D%22Page-1%22%3E7V1bU9vIEv41VCUPpjS669EYSNiTLCyQvTxtCUuAN7JFbBEgv%2F5IskaWplsXX0Yam9na2sWyLdvT3%2FR0f3070kbT109z9%2Bnxa%2Bj5wZGqeK9H2umRqmqmqsf%2FS668La%2BoqqMurzzMJ97yGllduJn88rOLSnb1eeL5i9ILozAMoslT%2BeI4nM38cVS65s7n4Uv5ZfdhUP7UJ%2FfBBxduxm4Ar%2F418aLH5VVbtVbXP%2FuTh0f6ycR0ls9MXfri7JcsHl0vfClc0s6OtNE8DKPlX9PXkR8kq0fX5a%2BLt7%2BCL9%2FNT7%2F9sfjhfjv53%2B3vfw6WNztf5y35T5j7s2jjWytXxnxkeT%2Fs6%2BDqdPL5kjwQf6Aa2a%2F96QbP2YplvzZ6o0s4D59nnp%2FcRjnSTl4eJ5F%2F8%2BSOk2dfYtTE1x6jaRA%2FIvGf95MgGIVBOE%2Ffq93bY388jq8vonn43S88c2cbupHcMPsC%2FjzyXxmZNfxgkkshxq8fTv1o%2Fha%2Fj97FMI3ljTLsDmzHPnYyQL%2BswKDT1z0WgKBrmdjdDIAP%2BQesFjn%2BI1vnddbcUtdZc9K85vxW0FGP2TUk%2BBrS%2FV5cQ43fGtJfuDPcTsOf7l36zuTFc38x%2BVV8HEZuVHgcq0m%2F%2BNj3JsWHQTj%2Bngsv02yFp5k94hPP8C1sjzimpbkmRwk7VGxUvDnsC7IlREWESxSTn3TtHe%2BQlXQJI13CSJcw0iVl6ZKidBUgXZ670bEYWWm6AWWlKIisbIebqIgmRQUVp6IwalO1oaxMDdOZNi9REcvie9bHWsz2dEyP2eqdZnaqxyxEjxmYGlNNcqyYvJbc1uXugMLSGGGZBhSWbmNnDrcjx1pLUOvvjfHYN%2B7vsb2hmZqjeR1bILxEOyCK3mInEgc7pYjGTbxEWUv3vZONOAAmhUmgsEwTkZVh8BKVIyWFSConLIoq0sIEY3Ez9TBLzwzizz15KonH%2FPGccCInwWTmD%2Bh3G8YvSf0II10m%2Bpr4r4fs%2F%2Bmd7ubslfi7Pq2ubQMEN5g8zOK%2Fx7Ek%2FPmhaNycn6J7GNnCjs4LKb%2B%2B359%2F%2FlP%2F7%2B%2Bnq%2FM%2FXpRPw7vfBhkRVQTKB%2FcuPvjccfQxFmV86JFkSS4ifwokuniZTAN35idHaDiLbrJnVEx%2ByWpOxm4wzJ6IwkTi48dJ4H1x38Ln5IcuInf8nT46eQznk1%2FxbV2KifjpeZSxlrpSesVN8s4iNvwrKqpckfhf3EWUa4MgcJ8Wk5U2mLrzh8nsJIyicJqDqmhD5JSiklsGlKTchktrBykEjZUoU%2B0yyBzkTMeOCUJqMJZ92nWyUWYP8aqtPo6xEIne8vNUxpJ3gxgpMzfyT5J1XwBk5790c7BDIup3d%2BovFd5NNJ%2FMHgDG40WPCngO%2FPuoEs2LWJ3F9%2FiSvuZUX125zn51cimM33sfpEh6nHieP0PU11M4mUXpshgn8b%2Fx4o2UY%2BPIiL%2FQKH5MVo%2Fjf5OXz6NROEt27STFkh8j%2FcVfRCjKatVAM8oyMW8q5Z0pLkjMXs0n40yYXvicrOahCbNGI2VnJ65YdiNy0%2BxZ5C38vsSOKVsSUFU3iH8aCzK5HZX3bQKH0wEBmNAgJjRE%2FoF75wdX4WISTcLk%2FvPlaxlc9LWPaYiwSag2J0uVGECGvvfgU1siXpHH8CGcucHZ6iqzD1av%2BRKmskpE9Z8fRW%2BZseA%2BR2EZFJ67eMwNQH%2FmDZPoZfzwLrEMl5fOJwHdUBBC8fPZvclqxyXfewNzMf7t4fN87NctUrajYgPowY9qXmjjsp77gRtNfpa%2FXeUxHy%2BG%2B1Z4QQbU1Z2vkgtFs7ZsAagmE91c7%2FXxH8tvsOnRjy%2BhY%2FYBtAK2wqf0eChDqwTE5MGVGyVmUHJFTd2w3cILVRpt0WUZvcArp5qo6aE69fhqeMPWAKtbxKI9Mvn1ywWgq3CalA6cJtUU22m6c8e2p2FOk6rpuuFxdJoYJyZHUOFYVHEetOZgrHaaCPt5trhOE%2BT4vkxiTGSUz0WK8vPA%2FRkW6CDlPr2wODgLvKUZZrbG31tZrk1442Zbt8gteu%2B29dpCNaBtjQp1B7Y1TndAvmPoecu9%2BmG5QxN3eaQeDZXiPv4ot21bl7jlMbGLbYuaZNDquPan8eK%2BXyE30PbVcq8Ust2hbsbtbiDk2E7PJPzxHbCXuxcpIS1VM7fzln6BugMXJyaKxAPDU9Rb22XTfPw8%2F5k%2FKHrCfnAXvhSd4PRC%2FASFzdpmeDO%2FkZ2ARQ%2B0jt5iXGEoZsyMXs9LBV5lDg9qsSla%2BRbLX5m9q8Y9bbzRchXAjdb1m1kvmPo4XL1gAg%2Bk9wtrtUe46qTCo10XrgBGCnOjHcFV1%2FnCtSJ7GaKTPymYcjJ0C8zC1KtKrxVAX9gk2SvKmwJF1g6xq0GNXIPxLTjBrSwjmOYSu4Cz70CoPWYqiE66OcORdXLegnTbfT6MTnRcRzVZZXXZMHuXqYACG4Y6U2B%2FmGX5Cqk7V7D7R4k02Ph3MYEHbIl9dw3WiYU3QLdatQjB16Ffz2i2sw6Wr9s0bLB7GHTI8FXHe8vZe5PkGLt3x6XdX2bp2x2OXUSkRE%2Fj67FMZkCYMHn%2BuBFsG52OgoakKkoE3rH221yXVWSHVGf0darLkOpESXNuKVK7pZWi85JpiwKRHtO9eHvWW2XbkAoKe0tiyCmreZobszYvBLK4OPFC7OdoThfZYpDGvJg%2BBf7Uz74rpn7qylcqjxasDqaMd24GhsEsLFZPhlU9cyv8a5GDgG5ecahjAbRGxYnAgWIGFuPGFDMbEWErUSpUyc52O3Sj4h3tU%2BN1%2F7c6YWpHcwKtr62uQgP%2BsFZct3XBVhwrnlim8D2qNHEvqfJbFIo5V88ciFjYAkzEpe5WKvwKqPe3TFYHzXM069iGNdUa1seqlv3YLtZkQWukkwICxrwRqp4AR%2FVa6RzbejjrOhQmy6tlrZn4BpqhiXE593yhyFjRI5VDZ6SfnWBkrJL%2Bc3QY%2FSMMle1HpavHGlR%2FeD0CcRq2y96Tvyp0E4dRYju6yaInLOG3BbKxOucIyW45wnpodwDlGr0mbphUg2bv5cvMnxeBIlCMXGKmfUyVH2ZgbH3pGNG8i1L9U9oYJXOSsqwMiaL%2BUWS1DX1wQ9H%2BxShTee0kRrmXkCEK7JXcaQRUw5KnWY4mdRuEIGkOwth2GGNbIyjX0CkrpPFrqby%2FrBBsnoY2QES7p3FrgGj20r2kQAJ5E3cazrzbxwnkglbUkdrPduWYnZ75gM3p6b10RDHYxqq6qTFY48AxadAxRnv5oe6x7OW3TS%2B%2FQzgKWdrJIPaxinStP%2FzegXhGPrTnxWse%2BC48v6WeWyePkVubOhwpsO3CKNFs4%2BigwdKuIGMvIdVl50McUmqzRyDJBJEg03dfRR1mUw%2B96WQ2SZY4EqsKRPTAY4sSyUMwAAfEYCOPdORcY9hRVXNb8XAjjzoMJl25i8VLOPcO%2BmQXUwHrgldo6vtXonnoZ3YDZPqu5tTRRk9UxYhWAyWVjAD93wwYKkggMw9jE8aniEkIv%2ByShI0IsOm9o5y%2BXqmNYG2aDimSYbQt7KnyNzkU9gxYP0BXDGDet64TbHOzHdUKEnaUp2blHDbX0IsByWG5n%2FrZT1Zn2wS6y7q98TYB0NUVeLNdbRO7r21Cpbh37dYOaouoLY%2Bcqr3UTW83%2BjWLYZTnRRTfvTV5Kfu7vRvyklCqElPGjQ49Od6IvNyn%2BLWBjgQ92NT3fY5GLjXf1swm4dXVxdi%2FQWy7YzbXbz63lyDruxuUARkKSWyJj5q%2Bqy6MFkEXYXvIHJKTobdtIG1UtLniwWsRWFq7uceus06009ph35lNBwtG%2BmmjcggexACwIhrqQXRaCmLAkKCU8KYSVlVHPAmbbYq%2BEkNH1nztCAYWm%2Bjed28mC3XNcwgUpGv%2BeA5TJyScRYNFarIkdrCmPL2mC0afp%2Bj4GsYieHfASSnApT2ncS1JY4sHTadnJDlY5SCrTM5mz2J0%2BToEZTIwqYfxVpZtXxCwkZ7wicTZCrAqv1kWgq18u06VVplX8oln%2BNYRwis5pqW5ZvYOKp4s6vUwd71JvET05Zl%2Fyw%2F8Thn8RGlJG5FCmfXhcu42lmYjOXcRiS17N83xuXHu1LIo1nOcfr34%2FeLm9np4e3l9cGDaS5gYLTuIcOM%2FHaT28NvN7eXXM4kQIRCClLd0PEwYMuTAPtxgWpC0D4WzDzuz%2BlS7rdrTalB9GCafhdJ50uQTUFMvNaG4Jp8Nz%2FKvw%2BtPn8%2BuL26HB4ekvcRI7%2FaerUJ7b%2FhleHJ9diMhIgREejf4bBhdGH2%2BGP3v7Pd%2F%2F7q4%2FfzvaHj77eri%2Bh8JFxHgQpS%2Ba8NspMr98vr226dvZzdnEiRCgERT%2BwYJ9CJvv%2F0ujxwx4GH0nYZnQy%2Fo%2FPLb9b%2Bjz2exErmRMBECJq3ddm4wgdlNJ9eXo9HllwsJEREgoiItdruFCDF1AIVOWuzGX%2F7v5P1Jglj2%2BJ8jWiwYPzh9LT16yx%2FtwYCmvNN5Y3ZuVSODbkoA8%2B%2FZPOB%2B6E1P3RBARc62F3K2veHox2wWHpI4kxO%2FJb7NrKk5qSaR96nRWF4MvkcVVgnm%2Bh5wn%2BmLtShdDGLcRtwr0C6%2BmC3iX%2Foh1l%2FLXM5Sl8aPyLX%2BLSNlt5YRR3kjfhAmb5UXhU8UmI337cmLlUe9wE%2FCMPDdmRR1a1FbCCPSsahhstdpYtX7H86m7iQoNm%2BTUt5Qyg5CjnYrZeoQFaT8yY%2BGQUBrUovDwRi9XZ9kLcUNGQpkPnPX8oZB2FjeJ2%2Fpnq7c2fLA3lDgOkJJdSvw3kf6CEwbkOyQFXTszsBiC3KMzMmrquE12FHjzBv4tMHK17GZ1kinvUliY2%2BIDYcdUmZgPqeB0Rq2fmxt1IVor5gNgtU6Smaj8eBcqoy1mA0MZdyYDQKZ2ozZCNM596lZlGqzj4W%2FpWnUXsIIl4FJmKMpDEnJjMuoELH0b9cVMsZidCxkyFBmLAYyw0rKeUM5YzxGx3KGofdqHiPT1ZK%2FWFPMKH%2FRsZwhAZ3yF7SVKt3VK5%2FjA32KHW8ouY3twIBxGxgY6opktgODCpX7Mm5%2BMX0KgCjlRLBKF7NF18dWQNqJi4lOIaHdyUouZt0c7APxL1V4rsV%2BSPyTxn6uvqoA%2F451l1rRha%2Bm5SyGMH5pYDo8x0oH0WIp3a%2FuEzVa6JykETyzpCGzpvyxyVjdyl%2FFOhtJ3mhbwVoIq4AJlhtvhEwiGpS0dOyPyH3aVpzYYKmO9ynat5kewR8%2BykN4Y%2BHmYaP%2BpIvMOZIOxL45EKaiMg4ENub3vToQBkz4KDsQNCQrtRemGwR2IZCBQqks610HyX1uJu%2F%2BXQZ04o10GbYVbO8uAzJ%2BZsDoZek0rCHQ%2Fp0GZGoH4jTIg3cj8YrgNthAXh3kVJZyJvHpq8UxL0Dvs1NhXifRsiLUyB7l9aDx36ty0OQBrQZd%2FmyOGZlmJtvGjMzK6NS2M1UswoQjdMZHaD0oGNwJuBs7mn86sMGcYLM%2BT7TxHZwSRaljttcbh%2F8mUNpugqr0860HZivWMY1Q5AhRmGzO9hOzkbvphLnb2nth556yCT1lkdCKzvHtH6xGa7CaFef6tmDVLXZUKlUzayMV3EqjB5JAMIWcZWJB%2BlOffmJ3Ey9aWXkbFdQrDltQr%2FU9iYKYLRzwvVMQQpqB1HRvoVR4mYGOxSgVc2M7kL2VZmx79lV%2BEnPKqk6DHdj0Dk52INWqB63DbHY6owAaDE2YW6WSnN5egtWXUa%2FKqNfQGelnJ1jUS0n%2FOTqMmVCEOIwna7bto2Wbx5SuOeAYmwU9B1BJXaXVZAO4nTaAy1TcWmG7jhvAwYzOK3exeAnnnsSLcHjBwn4d42X%2FMgVTie0k7LefoMFCiujpyAsztO6OTQ2Q9p2076B95xibmndOjadyKLYdJH0uX2a0PDiZPCpP6m6UrlVB9Qhj2SGjyC4iP2uLl%2F4lkSICUvq36dCpWtKmExk0vdt0yNyb4iz0AnTMH89hlJlzg0VqaiUaSFOeXtMlos%2FTLNDYKnx389NTU3dphWo8WWCSD%2FfLjSvHPqbMcG9EsC27wjU6T43BJ83BRc%2B3K5wNWnJZ9UEe%2BAbSRYyHpmFKiLWD2K%2Fv9%2Bef%2F9T%2F%2B%2Fvp6vyPF%2BXT8O63wWAnKRNrI0xjAWM0IAwMNDX4A0wlEmCVAHM0oXUYYUfgDtSGzpZAia39Br2TyLYDrbSKVpgJdXDujqMwO88F4eRkN8xqW04lTESfONCQw72CwyfKHFjGAnAtmE8rRHmSUzGSaM2xzdz8TgeyWqO5n7RJvLz7L8bs8fFx8rnzh8VHkThRcepZmgTcdrght55qND9NGlJgbWilT6MdZffTITw%2FWPITqanyg30H5Sc4m0W9VEztB8Ta0g39QCxPpmfqoVoDbO03dIJIlQ7C6A2RePVRITtbZRHKG4nEcVpCsfJM62aOokp6qSPbC3XSXohGRcCDs%2BuvsMmkDfqhQQHxOrBg3yfaRzZz2mWLoL1pEUQUg3HckQAManTTZM3D9dtjtQSQDmAt%2FfYqDbF1Ogovv11VIBPJ%2Bu0Fp50qNyD69%2By410tY63vcvErgTn3vNqxKq9SFt2FpfELasFsIcet57lVGKgg3EYbB31HNJtHNsmnSxN8wE966aNuhIuO7h95U2sF7ZwdrprSDK0EO67KkHdxsJWXKQWA7GNZP1djBchrMZmIWwBiGh1QxP3aZ0bo8sya%2BEPmu3NS8ylJsqtlzwmkevWzOi4l34I0%2F%2FzmJ100gq0KmxdTATWEDOIhVoSNwO%2FzyMVXFtJK0KhqPG7V%2BsDqWFYMhjJtVgYwe%2BxLGG5qdzJNPoXO9KWJhnN5eSsNjOyRg7ZsRJOgqNyjAUBE0PNKZ54drcgzMqsnz%2FZkcOtS0grGjgHA74k2s0dVuJNYqt11H7Chtdi%2FZ0S2EuBt2dF1K02G8Dy1rqllFabKvJw0MqF73ck4MKF3yMgMqoJ8i2c%2BaLAB6IwpMenI3TbAlyuE7KhoMFy9HYckJZ01qYS3uEx2XzY0U02RyBw%2FBYh0kMMFycz81Fch1SWpX%2Bp%2FlJ6DLKd3QrRCBzazGEMFOk9ihuyN8QnMP7o7e0lLu293RID2%2Bsi%2Bv5uGrUDWi0shsH2Jvb2TSpgCHbGQiHbLYafa1oH%2FPB1A9DyqArQl50IKPzIhXSra1ZNsam%2Fwkq0P2I1Hnw%2FHYXyyk3biNcLG2Yh1v2%2F3rRSeGi1gv2Gw2V58%2BIkxo%2B4SOrpcn7mYSxgZRYhLmF%2BLSYG5bLOKVbv4gvfrtRKz3LmKjl059R7w9c71tg6pKEXEuUzXYqvRylz1OcSZD9jTbHjKVE4Q5Q4ZtOWYqDZFMzal9Ay%2BMyXYvO8BYVbvgjjE20Br64MVWSv07OKFMh%2FHEdASFjJmvTWe%2BkzEUBA7MJtD6UjHnWDl86lRvjhCI6c%2B9i5EDalWqVQ07iyKZH4fXRL0vBwSJkuMhUXOEM78do2b%2FiiIPfVBFE2gwRhkDDTfeUa8quEw1zIcw%2BW9R5eQlEOlDqXqEQJHd%2F4EF4xKf%2FCjFyMkbbVczSiz2cVRMdBpnlwqzNCW%2BhMMXSp5jANP46SkYr%2F725FXqqQxEJ2EY%2BO5MwkgMGBnQZetYT9FvUIDRabJaGYyq1ZFEklBIsno%2F8ai5L4nZLWqeiFoxm5czMUuovUJ9t6a2xxZTMWl00vbY0CXGts4W7qeujhgMP0qZ%2FcoROGxh3ZqvHzS8fgC6qnaCYNlKvuGMaxNV76WXPIxeqZ1AxpLTDivXxmx7sFYaUJwx44CokNYQ8Wx6By%2BUydyNHaCsqs6KN8rYs8%2FMLKVqlDHvMBoD8ayF2Ekc3pKjErZHZU%2Bqj4VkJ81eaRBcAmYbNdaLfWUCJdbJwUdXpcCAfXUns4Sbn4dBgHDuMtnn3Sf7mLp6zLiPlmMcO7BqQqN6sMTC2TXj8A4k5ceEzRtKKXSr2IQwRXXvg0o21277gWOYG5NsqgA5bClmXZ9VCZs%2BYINk%2B3QNGyRz43me%2FKxhVfdKiR0hsIMk%2FXSNHZjvDbAhM8WEAg1WooqihlsKhokmNa8UTNpSd4%2B76ErddISn%2BqAw45fqY6IDbEo4i11HWi37M4zvJrEjBHaQ%2FB4cO9wKcE2Yh1hMZ72U6az7gCPEz%2B%2FaQELbMeD5rB9GMol1D1ClKv17%2BvVJrKx2kqmHIsKIdvPsD0Y0F60iibVaHUkkCYUko3cewMI6Dq%2BmYRQwYv54DpPLSQRosEijMwmiNOXpNV0k%2BjwdlbGKJwkxvavLKEwaJFvGrzSlLYI2KsE2QVTGtmwsKtPtLA9L9qyo1gnZnm9OjTa3TY3eUogyc7NBsQvceEShnngerTU6yUaBx8no8uvV5c3F7RlEUxBMnhYpO%2FzoPiUXx0H47FWo8wJGmBj8ves5nnGExOBdXyeaylEDr%2BqJ8mAiEqHGBlwRdkL17jauDWnaq%2BvLv%2F%2FhJoA74nn3CiYAolia4%2FM8AhUmRQCjoDoXAOQvz4ej28trfiKI94DljjER3Ommoeg8RaAbwAohDpwp2bUUnBbDNDo40EoHVuF0m4VpdK18usEAG9OQn%2FfJRnPvm1PmnJ1k%2FiLzohy1hCWd7Ra0%2FA3Z21YggXdiW2nlmUL0TssfCe607mE70JjUT%2FqV%2BZ61DiQBkmYw%2FtTPvu0hDCrUmPFhau9zCp0WkfMe1Qo%2B1qN3vZKjtVGx7CQVF1ErKqNWzE3VCmvxqR1pFbWpvk%2Btff26Wih%2BOA8TRmf18njnP34NPT95xf8B%3C%2Fdiagram%3E%3C%2Fmxfile%3E)


![PizzeriaWithPattern](https://github.com/user-attachments/assets/6b391f09-bd0b-4d1f-979b-9d1e570f291d)

## Used Patterns

The requirements of this project were the use of one or more structural design patterns.


### Composite

For the main product of the system, Composite were used in Order object manipulation, providing a commom interface between the enum class PizzaFlavor and the composed Pizza object. With composite we only call the method GetFlavor and it returns the detailed object.




### Proxy

In this project, proxy were used at Administrator login service call, intermediating AdmService, "AdmServiceProxy" saves the last successful login (applying cache) and send to other service calls untill method logout.




### Factory

Factory were used to create User instances, Administrator and Customer, just exploring the pattern and providing the system a better reutilization and management in the future.