{"id":2121,"date":"2019-08-04T02:02:04","date_gmt":"2019-08-03T23:02:04","guid":{"rendered":"http:\/\/demensdeum.com\/blog\/?p=2121"},"modified":"2024-12-16T22:32:35","modified_gmt":"2024-12-16T19:32:35","slug":"proxy-pattern","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/fr\/2019\/08\/04\/proxy-pattern\/","title":{"rendered":"Mod\u00e8le de proxy"},"content":{"rendered":"<p>Le mod\u00e8le Proxy fait r\u00e9f\u00e9rence \u00e0 des mod\u00e8les de conception structurelle.<br \/>Le mod\u00e8le d\u00e9crit la technique de travail avec une classe via une couche de classe &#8211;\u00a0; procuration. Un proxy vous permet de modifier les fonctionnalit\u00e9s de la classe d&#8217;origine, avec la possibilit\u00e9 de conserver le comportement d&#8217;origine, tout en conservant l&#8217;interface de classe d&#8217;origine.<br \/>Imaginons la situation &#8211; en 2015, l&#8217;un des pays d&#8217;Europe occidentale a d\u00e9cid\u00e9 d&#8217;enregistrer toutes les demandes adress\u00e9es aux sites Internet des utilisateurs du pays, afin d&#8217;am\u00e9liorer les statistiques et une compr\u00e9hension approfondie des sentiments politiques des citoyens.<br \/>Imaginons le pseudocode d&#8217;une impl\u00e9mentation na\u00efve de la passerelle que les citoyens utilisent pour acc\u00e9der \u00e0 Internet\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>class InternetRouter {\n\n    private let internet: Internet\n\n    init(internet: Internet) {\n        self.internet = internet\n    }\n\n    func handle(request: Request, from client: Client) -> Data {\n        return self.internet.handle(request)\n    }\n\n}\n<\/code><\/pre>\n<\/div>\n<p>Dans le code ci-dessus, nous cr\u00e9ons une classe de routeur Internet avec un pointeur vers un objet qui fournit un acc\u00e8s \u00e0 Internet. Lorsqu&#8217;un client fait une demande de site Web, nous renvoyons une r\u00e9ponse depuis Internet.<\/p>\n<p>En utilisant le mod\u00e8le Proxy et l&#8217;anti-mod\u00e8le singleton, nous ajouterons une fonctionnalit\u00e9 pour enregistrer le nom et l&#8217;URL du client\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>class InternetRouterProxy {\n\n    private let internetRouter: InternetRouter\n\n    init(internet: Internet) {\n        self.internetRouter = InternetRouter(internet: internet)\n    }\n\n    func handle(request: Request, from client: Client) -> Data {\n\n        Logger.shared.log(\u201cClient name: \\(client.name), requested URL: \\(request.URL)\u201d)\n\n        return self.internetRouter.handle(request: request, from: client)\n    }\n\n}\n<\/code><\/pre>\n<\/div>\n<p>En raison de la pr\u00e9servation de l&#8217;interface InternetRouter d&#8217;origine dans la classe proxy InternetRouterProxy, il suffit de remplacer la classe d&#8217;initialisation d&#8217;InternerRouter par son proxy, aucune autre modification de la base de code n&#8217;est requise.<\/p>\n<h3>Sources<\/h3>\n<p><a href=\"https:\/\/refactoring.guru\/ru\/design-patterns\/proxy\" rel=\"noopener noreferrer\" target=\"_blank\">https:\/\/refactoring.guru\/ru\/design-patterns\/ mandataire<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le mod\u00e8le Proxy fait r\u00e9f\u00e9rence \u00e0 des mod\u00e8les de conception structurelle.Le mod\u00e8le d\u00e9crit la technique de travail avec une classe via une couche de classe &#8211;\u00a0; procuration. Un proxy vous permet de modifier les fonctionnalit\u00e9s de la classe d&#8217;origine, avec la possibilit\u00e9 de conserver le comportement d&#8217;origine, tout en conservant l&#8217;interface de classe d&#8217;origine.Imaginons la<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/fr\/2019\/08\/04\/proxy-pattern\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Mod\u00e8le de proxy&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[61,52],"tags":[95,111],"class_list":["post-2121","post","type-post","status-publish","format-standard","hentry","category-techie","category-tutorials","tag-patterns","tag-proxy","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"fr","enabled_languages":["en","ru","zh","de","fr","ja","pt","hi"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false},"hi":{"title":false,"content":false,"excerpt":false}}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/2121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/comments?post=2121"}],"version-history":[{"count":13,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/2121\/revisions"}],"predecessor-version":[{"id":3949,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/2121\/revisions\/3949"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/media?parent=2121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/categories?post=2121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/tags?post=2121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}