码迷,mamicode.com
首页 > 编程语言 > 详细

两种语言实现设计模式(C++和Java)(五:代理模式)

时间:2019-04-30 19:48:09      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:汽车   font   其他   aic   real   ace   imp   col   代码   

参考:https://blog.csdn.net/lh844386434/article/details/18045671

代理模式指为其他对象提供一种代理以控制对这个对象的访问。这样实现了业务和核心功能分离。

技术图片

Subject: 抽象角色。声明真实对象和代理对象的共同接口。
Proxy: 代理角色。代理对象与真实对象实现相同的接口,所以它能够在任何时刻都能够代理真实对象。代理角色内部包含有对真实对象的引用,所以她可以操作真实对象,同时也可以附加其他的操作,相当于对真实对象进行封装。
RealSubject: 真实角色。它代表着真实对象,是我们最终要引用的对象

举例:大众汽车工厂讲车辆代理给上汽集团SAIC生产

1.C++代码

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 class ICarFactory{
 6 public:
 7     ICarFactory(){}
 8     virtual void productCar()=0;
 9 };
10 
11 class VolkswagenFactory:public ICarFactory{
12 public:
13     VolkswagenFactory(){}
14     void productCar(){
15         cout << "Product Volkswagen Car" << endl;
16     }
17 };
18 
19 class FactorySaicProxy: public ICarFactory{
20 public:
21     FactorySaicProxy(ICarFactory* factory){
22         myFactory = factory;
23     }
24     void productCar(){
25         myFactory->productCar();
26     }
27 
28 private:
29     ICarFactory* myFactory;
30 };
31 
32 
33 int main()
34 {
35     VolkswagenFactory* factory = new VolkswagenFactory();
36     FactorySaicProxy* factoryProxy = new FactorySaicProxy(factory);
37     factoryProxy->productCar();
38 }

2.Java代码

 1 public interface ICarFactory {
 2     void produceCar();
 3 }
 4 
 5 public class VolkswagenFactory implements ICarFactory {
 6     @Override
 7     public void produceCar() {
 8         System.out.println("Produce Volkswagen Car");
 9     }
10 }
11 
12 
13 public class SaicFactoryProxy implements ICarFactory {
14 
15     private ICarFactory carFactory;
16 
17     SaicFactoryProxy(ICarFactory carFactory){this.carFactory = carFactory;}
18 
19     @Override
20     public void produceCar() {
21         carFactory.produceCar();
22     }
23 }
24 
25 public class Main {
26 
27     public static void main(String[] args){
28         SaicFactoryProxy saicFactoryProxy = new SaicFactoryProxy(new VolkswagenFactory());
29         saicFactoryProxy.produceCar();
30     }
31 }

 

两种语言实现设计模式(C++和Java)(五:代理模式)

标签:汽车   font   其他   aic   real   ace   imp   col   代码   

原文地址:https://www.cnblogs.com/Asp1rant/p/10797789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!