代理模式是为其他对象提供一种代理以控制这个对象的访问。 代理类和被代理类 实现同样的方法,通过代理类隐藏了被代理类,但是方法的名称一样,使用起来感觉不到被代理类的存在 1 远程代理 ,为同一对象在不同的地址空间提供局部的代表。隐藏一个对象存在于不同地址空间的事实。 2 虚拟代理 ,根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。 3 安全代理, 用来控制对真实对象的访问权限。比如,用户登录 登录类作为代理,控制不同的访问调用 4 智能指引, 调用真实对象时,代理处理另一些事务。
Inheritance: GiveGift
コード例 #1
0
ファイル: SignUpTest.cs プロジェクト: DorEbert/TorrentEbert
        public void SignUp()
        {
            var sut = new UserController();
            //string requestURI = ConfigurationManager.ConnectionStrings[USERCONTROLLER_SIGNUP].ToString();
            List <User> users = new List <User>();

            _users = new UserDAL();
            _proxy = new Proxy.Proxy();
            _admin = new AdminDAL();
            int amount_of_users = _admin.GetListOfUsers().Count;

            for (int i = 0; i < 10; i++)
            {
                User user = new User();
                user.FirstName   = "c" + i;
                user.LastName    = "c" + i;
                user.UserName    = "******" + i;
                user.DateOfBirth = DateTime.Now;
                user.Password    = "******" + i;
                users.Add(user);
                string        requestURI = ConfigurationManager.ConnectionStrings[USERCONTROLLER_SIGNUP].ToString();
                StringContent content    = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(user), Encoding.UTF8,
                                                             "application/json");
                sut.SignUp(user);
                //_users.SignUp(user);
            }
            Assert.AreEqual(_admin.GetListOfUsers().Count, users.Count + amount_of_users);
        }
コード例 #2
0
        private void Remover(string pizza)
        {
            IMonitore proxy = new Proxy.Proxy(new PizzaDB());

            proxy.Remover(pizza);
            GVProcura.DataSource = null;
            GVProcura.DataBind();
        }
コード例 #3
0
 protected async void Page_Load(object sender, EventArgs e)
 {
     try
     {
         _proxy = new Proxy.Proxy();
         await onloadAsync();
     }
     catch (Exception exception)
     {
         Console.WriteLine(exception);
     }
 }
コード例 #4
0
 public MainWindow()
 {
     InitializeComponent();
     try
     {
         this.User_Name.Text         = ConfigurationManager.ConnectionStrings[USER_ID].ToString();
         this.User_Password.Password = ConfigurationManager.ConnectionStrings[USER_PASSWORD].ToString();
         connection_string           = ConfigurationManager.ConnectionStrings[CONNECTIONSLOGINTRINGS].ToString();
         downloadPath = ConfigurationManager.ConnectionStrings[DOWNLOADPATHFOLDER].ToString();
         uploadPath   = ConfigurationManager.ConnectionStrings[UPLOADPATHFOLDER].ToString();
         client       = new FireSharp.FirebaseClient(ifc);
         _proxy       = new Proxy.Proxy();
     }
     catch (Exception e)
     {
         Console.WriteLine($"Can Not Initiate , error message: {e.Message}");
     }
 }
コード例 #5
0
        // POST api/values
        public void Post([FromBody] Pizza pizza)
        {
            IMonitore proxy = new Proxy.Proxy(new PizzaDB());

            proxy.Insert(pizza);
        }
コード例 #6
0
        // GET: Pizza
        public IEnumerable <Pizza> Get()
        {
            IMonitore proxy = new Proxy.Proxy(new PizzaDB());

            return(proxy.Select());
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: red201432/Design_pattern
        static void Main(string[] args)
        {
            #region 工厂方法
            double total = 0.0d;
            CashContext cc = new CashContext(new CashNormal());
            total = cc.GetResult(100.04);
            cc = new CashContext(new CashRebate("0.8"));
            total = cc.GetResult(100.04);
            Console.WriteLine(total);
            #endregion

            #region 装饰器方法
            Decorator.Component person = new Decorator.Component("xiaocai");

            Tshirt tshirt = new Tshirt();
            BigTrouser bt = new BigTrouser();

            bt.Decorator(person);
            tshirt.Decorator(bt);
            tshirt.show();

            Console.WriteLine("*****************************");
            #endregion

            #region 代理方法
            SchoolGirl sg = new SchoolGirl();
            sg.Name = "李娇骄";
            Proxy.Proxy daili = new Proxy.Proxy(sg);
            daili.GiveDolls();
            daili.GiveFlowers();
            #endregion

            #region 原型模式
            ConcretePrototype1 p1 = new ConcretePrototype1("123");
            ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone();
            Console.WriteLine("Cloned :"+c1.Id);

            Resume a = new Resume("Andy");
            a.setInfo("Man", "24");
            a.setWorkExperience("1998-2005","IBM ");
            Resume b = (Resume)a.Clone();
            b.setWorkExperience("2002-2005", "Dell");
            a.display();
            b.display();
            #endregion

            #region 模板模式
            Console.WriteLine("Student A testPaper:");
            TestPaperA testA = new TestPaperA();
            testA.Test1();
            testA.Test2();
            Console.WriteLine("Student B testPaper:");
            TestPaperB testB = new TestPaperB();
            testB.Test1();
            testB.Test2();
            #endregion

            #region 抽象工厂方法
            User user = new User();

            IFactory factory = new SqlServerFactory();
            IUser iu = factory.CreateUser();
            //IUser riu = (IUser)Assembly.Load("AbstractFactory").CreateInstance("SqlserverUser");
            //反射
            //Assembly.Load("程序集名称").CreateInstance("程序集名称.类名称");
            iu.Insert(user);
            iu.GetUser(1);
            #endregion

            #region Facade 外观模式
            Fund jijin = new Fund();
            jijin.BuyFund();
            jijin.sellFund();
            #endregion

            #region 建造者模式
            Director director = new Director();
            abstractBuilder builder1 = new Builder1();
            abstractBuilder builder2 = new BuilderB();
            director.Construct(builder1);
            Builder.Builder b1 = builder1.getBuilder();
            b1.show();

            director.Construct(builder2);
            Builder.Builder b2 = builder2.getBuilder();
            b2.show();
            #endregion
            #region 观察者模式
            Observer.ConcreteSubject s = new Observer.ConcreteSubject();
            s.Attach(new Observer.ConcreteObserver(s, "x"));
            s.Attach(new Observer.ConcreteObserver(s, "y"));
            s.SubjectState = "ABC";
            s.Notify();
            ///下面是使用委托
            ///委托就是一种引用方法的类型。一旦为委托分配了方法,委托将于该方法具有完全相同的行为。
            ///委托方法的使用可以像其他的方法一样具有参数和返回值。委托可以看作是对函数的抽象,是函数的”类“,委托的实例将代表一个具体的函数
            ///一个委托可以搭载多个方法,所有方法被依次唤起,委托搭载的方法不需要属于同一个类,只需要具有相同的原型和形式,也就是拥有相同的参数列表和返回类型。
            ///在使用带参数的委托时,只需要在声明事件的地方将参数传递给事件。在绑定时将调用的方法绑定给事件。
            Bosscs boss = new Bosscs();
            StockObserver tongshi1 = new StockObserver("tongshi1",boss);
            NBAObserver tongshiNBA = new NBAObserver("tongshiNBA", boss);
            boss.Update += new EventHandler1(tongshi1.CloseStockMarket);
            boss.Update += new EventHandler1(tongshiNBA.CloseStockMarket);
            boss.update2 += new EventHandler2(tongshiNBA.print);
            boss.SubjectState = " I am back ";
            boss.Notify();
            #endregion

            #region 状态模式
            State.Context c = new State.Context(new CreateStateA());
            c.Request();
            c.Request();
            c.Request();
            c.Request();

            #endregion

            #region 备忘录模式
            Originator o = new Originator();
            o.State = "On";
            o.Show();
            Caretaker care = new Caretaker();
            care.Memento = o.CreateMemento();
            o.State = "Off";
            o.Show();

            o.SetMemento(care.Memento);
            o.Show();

            GameRole gameRole = new GameRole();
            gameRole.GetInitState();
            gameRole.StateDisplay();

            RoleStateManager stateManager = new RoleStateManager();
            stateManager.Memento = gameRole.SaveState();

            gameRole.Fight();
            gameRole.StateDisplay();

            gameRole.RecoveryState(stateManager.Memento);
            gameRole.StateDisplay();
            #endregion

            #region 组合模式
            Composite.Composite root = new Composite.Component("root");
            root.Add(new Leaf("Leaf A"));
            root.Add(new Leaf("Leaf B"));

            Composite.Composite comp = new Composite.Component("comp X");
            comp.Add(new Leaf("Leaf XA"));
            comp.Add(new Leaf("Leaf XB"));
            root.Add(comp);

            Composite.Composite comp2 = new Composite.Component("Comp X2");
            comp2.Add(new Leaf("Leaf X2A"));
            comp2.Add(new Leaf("Leaf X2B"));
            comp.Add(comp2);

            root.Add(new Leaf("Leaf C"));
            Leaf leaf = new Leaf("Leaf D");

            root.Add(leaf);
            root.Display(1);
            root.Remove(leaf);
            root.Display(1);
            #endregion

            #region 迭代器模式
            ConCreteAggregate aggregate = new ConCreteAggregate();
            aggregate[0] = "大鸟";
            aggregate[1] = "小菜";
            aggregate[2]="行李";
            aggregate[3] = "老外";
            aggregate[4] = "小偷";
            Iterator.Iterator myIterator = new ConCreteIterator(aggregate);
            object item = myIterator.First();
            while (!myIterator.IsDone())
            {
                Console.WriteLine(myIterator.CurrentItem() + "请买车票");
                myIterator.Next();
            }
            #endregion

            #region 单例模式
             //所有类都有构造方法,不编码则默认生成空的构造方法,若有显示定义的构造方法,默认的构造方法就会失效。只要将构造方法改写为私有的,外部的程序就不能通过new 来初始化它。
            //通过一个共有的方法来返回类的实例。
            Singleton.Singleton s1 = Singleton.Singleton.GetInstance();
            Singleton.Singleton s2 = Singleton.Singleton.GetInstance();

            if (s1 == s2)
            {
                Console.WriteLine("两个对象是相同的实例。");
            }

            #endregion

            #region 命令模式
            Receiver r = new Receiver();
            Command.Command command = new Command.ConcreteCommand(r);
            Invoker invoker = new Invoker();
            invoker.SetCommand(command);
            invoker.ExecuteCommand();
            #endregion

            #region 职责链模式
            Handler h1 = new ConcreteHandler1();
            Handler h2 = new ConcreteHandler2();
            h1.SetSuccessor(h2);
            int[] requests = { 2, 3, 4, 5, 6, 12, 34, 11, 15 };
            foreach (int request in requests)
            {
                h1.HandlerRequest(request);
            }
            #endregion

            #region 中介者模式
            ConcreteMediator mediator = new ConcreteMediator();
            ConcreteColleague1 colleague1 = new ConcreteColleague1(mediator);
            ConcreteColleague2 colleague2 = new ConcreteColleague2(mediator);
            mediator.Colleague1 = colleague1;
            mediator.Colleague2 = colleague2;
            colleague1.Send("吃饭了吗?");
            colleague2.Send("还没有呢");
            #endregion

            #region 享元模式
            int extri = 22;
            FlyweightFactory f = new FlyweightFactory();
            Flyweight.Flyweight fx = f.GetFlyweight("X");
            fx.Operation(--extri);

            Flyweight.Flyweight fy = f.GetFlyweight("Y");
            fy.Operation(--extri);

            Flyweight.Flyweight fz = f.GetFlyweight("Z");
            fz.Operation(--extri);

            #endregion

            #region 解释器模式
            <<<<<<< HEAD
            Interpreter.Context context = new Interpreter.Context();
            IList<Interpreter.AbstractExpression> list = new List<Interpreter.AbstractExpression>();
            list.Add(new Interpreter.TerminalExpression());
            list.Add(new Interpreter.NormalExpression());
            foreach (Interpreter.AbstractExpression exp in list)
                exp.Interpret(context);
            =======
            Interpreter.Context context1 = new Interpreter.Context();
            IList<AbstractExpression> list = new List<AbstractExpression>();
            list.Add(new TerminalExpression());
            list.Add(new NonTerminalExpression());
            foreach (AbstractExpression exp in list)
            {
                exp.Interpreter(context1);
            }
            #endregion

            #region 访问者模式
            ObjectStructure os = new ObjectStructure();
            os.Add(new Man());
            os.Add(new Woman());
            Success v1 = new Success();
            os.Display(v1);
            Failing f1 = new Failing();
            os.Display(f1);

            Amativeness a1 = new Amativeness();
            os.Display(a1);
            >>>>>>> 77e342ef6e96917a8dc01e72e41626dcffd4ba13
            #endregion
            Console.Read();
        }
コード例 #8
0
ファイル: ProxyHandler.cs プロジェクト: Lobo-Prix/TeraTale
 public ProxyHandler(Proxy server)
 {
     _server = server;
 }
コード例 #9
0
        private List <Log> GetLogs()
        {
            IMonitore proxy = new Proxy.Proxy(new LogDB());

            return(proxy.Select());
        }
コード例 #10
0
        private void SaveLog(string msg)
        {
            IMonitore proxy = new Proxy.Proxy(new LogDB());

            proxy.SaveLog(msg);
        }
コード例 #11
0
        private void Inserir(Pizza pizza)
        {
            IMonitore proxy = new Proxy.Proxy(new PizzaDB());

            proxy.Insert(pizza);
        }
コード例 #12
0
        private List <Pizza> Select()
        {
            IMonitore proxy = new Proxy.Proxy(new PizzaDB());

            return(proxy.Select());
        }
コード例 #13
0
        private List <Pizza> Localizar(string msg)
        {
            IMonitore proxy = new Proxy.Proxy(new PizzaDB());

            return(proxy.LocalizarPizza(msg));
        }
コード例 #14
0
        static void Main(string[] args)
        {
            //原型模式
            //ConcretePrototype p1 = new ConcretePrototype("I");
            //ConcretePrototype p2 = p1.Clone() as ConcretePrototype;
            //Console.WriteLine("Cloned:{0}", p1.Id);
            //Console.Read();

            //Resume a = new Resume("伊布");
            //a.SetPersonallInfo("男", 32);
            //a.SetWorkExperience("2011-2016", "巴黎圣日耳曼");

            //Resume b = (Resume)a.Clone();
            //b.SetWorkExperience("2016-2017", "曼联");

            //Resume c = (Resume)a.Clone();
            ////c.SetPersonallInfo("男",28);
            //c.SetWorkExperience("2017-XX","未知");

            //a.Display();
            //b.Display();
            //c.Display();

            //模板方法模式
            //AbstractClass c;

            //c = new ConcreteClassA();
            //c.TemplateMethod();

            //c = new ConcreteClassB();
            //c.TemplateMethod();

            //外观模式
            //Facade.Facade facade = new Facade.Facade();
            //facade.MethodA();
            //facade.MethodB();

            //建造者模式
            //Director director = new Director();
            //Builder.Builder b1 = new ConcreteBuilder1();
            //director.Construct(b1);
            //Product product = b1.GetResult();
            //product.Show();

            //观察者模式
            //ConcreteSubject s = new ConcreteSubject();

            //s.Attach(new ConcreteObserver(s, "X"));
            //s.Attach(new ConcreteObserver(s, "Y"));
            //s.Attach(new ConcreteObserver(s, "Z"));

            //s.SubjectState = "Ready";
            //s.Notify();

            Boss huhansan = new Boss();

            //看股票的同事
            //StockObserver tongshil = new StockObserver("马蓉", huhansan);
            //看NBA的同事
            //NBAObserver tongshi2 = new NBAObserver("易茶冠", huhansan);

            //huhansan.Update += new Observer.EventHandler(tongshil.CloseStockMarket);
            //huhansan.Update += new Observer.EventHandler(tongshi2.CloseNBADirectSeeding);

            //huhansan.SubjectState = "我胡汉三回来了";

            //huhansan.Notify();

            //抽象工厂
            //Department department = new Department();
            //IFactory factory = new MysqlFactory();
            ////IDepartment idpt = factory.CreateDepartment();
            //IDepartment idpt = DataAccess.CreateDepartment();
            //idpt.Insert(department);

            //状态模式
            //Context c = new Context(new ConcreteStateA());
            //c.Request();
            //c.Request();
            //c.Request();
            //c.Request();

            //适配器模式
            //Target target = new Adapter.Adapter();
            //target.Request();

            //备忘录模式
            //Originator o = new Originator();
            //o.State = "On";
            //o.Show();

            //Caretaker c = new Caretaker();
            //c.Memento = o.CreateMemento();

            //o.State = "Off";
            //o.Show();

            //o.SetMemento(c.Memento);
            //o.Show();

            //组合模式
            //Composite.Composite root = new Composite.Composite("root");
            //root.Add(new Leaf("Leaf A"));
            //root.Add(new Leaf("Leaf B"));

            //Composite.Composite comp = new Composite.Composite("Composite X");
            //comp.Add(new Leaf("Leaf XA"));
            //comp.Add(new Leaf("Leaf XB"));

            //root.Add(comp);

            //Composite.Composite comp2 = new Composite.Composite("Composite XY");
            //comp2.Add(new Leaf("Leaf XYA"));
            //comp2.Add(new Leaf("Leaf XYB"));

            //comp.Add(comp2);

            //root.Add(new Leaf("Leaf C"));
            //Leaf leaf = new Leaf("Leaf D");

            //root.Add(leaf);
            //root.Remove(leaf);

            //root.Display(1);

            //单例模式
            Singleton.Singleton s = Singleton.Singleton.GetInstance();

            //桥接模式
            //Abstraction ab = new RefinedAbstraction();

            //ab.SetImplementor(new ConcreteImplementor());
            //ab.Operation();

            //ab.SetImplementor(new ConcreteImplementorB());
            //ab.Operation();

            //命令模式
            //Receiver r = new Receiver();
            //Command.Command c = new ConcreteCommand(r);
            //Invoker i = new Invoker();
            //i.SetCommand(c);
            //i.ExecuteCommand();

            //责任链模式
            //Handler h1 = new ConcreteHandlerA();
            //Handler h2 = new ConcreteHandlerB();
            //Handler h3 = new ConcreteHandlerC();

            //h1.SetSuccessor(h2);
            //h2.SetSuccessor(h3);

            //int[] requests = { 1, 3, 14, 25, 19, 29, 31 };
            //foreach (int request in requests)
            //{
            //    h1.HandlerRequest(request);
            //}

            //中介模式
            //ConcreteMediator m = new ConcreteMediator();

            //ConcreteColleagueA a = new ConcreteColleagueA(m);
            //ConcreteColleagueB b= new ConcreteColleagueB(m);

            //m.ColleagueA = a;
            //m.ColleagueB = b;

            //a.Send("吃了吗?");
            //b.Send("没呢,你请客?");

            //享元分享
            //int extrinsicstate = 22;

            //FlyweightFactory f = new FlyweightFactory();
            //Flyweight.Flyweight fx = f.GetFlyweight("X");
            //fx.Operation(--extrinsicstate);

            //Flyweight.Flyweight fy = f.GetFlyweight("Y");
            //fy.Operation(--extrinsicstate);

            //Flyweight.Flyweight fz = f.GetFlyweight("Z");
            //fz.Operation(--extrinsicstate);

            //UnsharedConcreteFlyweight uf = new UnsharedConcreteFlyweight();
            //uf.Operation(--extrinsicstate);

            //解释器模式
            //Interpreter.Context context = new Interpreter.Context();
            //IList<AbstractExpression> list = new List<AbstractExpression>();
            //list.Add(new TerminalExpression());
            //list.Add(new NonterminalExpression());
            //list.Add(new TerminalExpression());
            //list.Add(new TerminalExpression());

            //foreach (var exp in list)
            //{
            //    exp.Interpret(context);
            //}

            //访问者模式
            //ObjectStructure o = new ObjectStructure();
            //o.Attach(new ConcreteElementA());
            //o.Attach(new ConcreteElementB());

            //ConcreteVisitorA va = new ConcreteVisitorA();
            //ConcreteVisitorB vb = new ConcreteVisitorB();

            //o.Accept(va);
            //o.Accept(vb);

            //装饰模式
            //ConcreteComponet c = new ConcreteComponet();
            //ConcreteDecoratorA d1 = new ConcreteDecoratorA();
            //ConcreteDecoratorB d2 = new ConcreteDecoratorB();

            //d1.SetComponent(c);
            //d2.SetComponent(d1);
            //d2.Operation();

            //代理模式
            Proxy.Proxy p = new Proxy.Proxy();
            p.Request();

            Console.Read();
        }
コード例 #15
0
ファイル: Program.cs プロジェクト: rytisder/DesignPatternsGOF
        public static void Main(string[] args)
        {
            Proxy proxy = new Proxy("SomeLegitPassword");

            proxy.DoHeavyLifting();
        }