zoukankan      html  css  js  c++  java
  • 使用委托中介租房理解委托与事件

    委托和事件,.Net Framework中的应用非常广泛,然而,较好的理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像一道门槛儿,跨过去的,觉得太容易了,而没有过去的人每次见到委托事件就觉得心慌慌,浑身不自在。

    我个人还是比较喜欢用面向对象的编程思想去理解逻辑程序,理解编程。下面就用委托中介公司租房子的示例理解使用委托流程:

    1.定义委托和委托对象——租房人想要租房,但是没有房源,于是委托中介找房子;
    2.编写要委托的方法——租房中介有房源,可以找到房子;
    3.将要委托的方法传递给委托对象——租房人来到租房中介公司,把租房委托传达给中介公司;
    4.使用委托调用委托方法——中介公司开始找房子;

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 使用委托模拟租房
    {
        class Program
        {
            static void Main(string[] args)
            {
                Customer customer = new Customer("王天", RoomType.OneBedRoom, 1000);
                Agency agency = new Agency("美家");
                Room room1 = new Room(RoomType.OneBedRoom,1000);
                Room room2 = new Room(RoomType.TwoBedRoom, 3000);
                agency.roomList.Add(room1);
                agency.roomList.Add(room2);
                customer.findRoom = agency.FindRoom;
                customer.FindRoom();
            }
        }
        /// <summary>
        /// 房间类型枚举
        /// </summary>
        public enum RoomType
        {
            OneBedRoom, TwoBedRoom, ThreeBenRoom
        }
        /// <summary>
        /// 房间类
        /// </summary>
        class Room
        {
            public Room(RoomType type,int price)
            {
                this.RoomType = type;
                this.Price = price;
            }
            public RoomType RoomType { get; set; }
            public int Price { get; set; }
        }
        /// <summary>
        /// 客户类
        /// </summary>
        class Customer
        {
            public Customer(string name, RoomType type, int price)
            {
                this.CusName = name;
                this.wantPrice = price;
            }
            public string CusName { get; set; }
            public RoomType wantRoomType { get; set; }
            public int wantPrice { get; set; }
            
            public delegate void LetAgencyToFindRoom(RoomType roomType, int roomPrice);
            public LetAgencyToFindRoom findRoom;
            //让中介找房子的方法
            public void FindRoom()
            {
                Console.WriteLine(CusName + "说:我要找一套" + wantRoomType + "的房子,价格不高于" + wantPrice);
                findRoom(wantRoomType, wantPrice);
            }
        }
        /// <summary>
        /// 中介类
        /// </summary>
        class Agency
        {
            public Agency(string name){
    
            }
            public string AgencyName { get; set; }
            public List<Room> roomList = new List<Room>();
            public void FindRoom(RoomType type, int roomPrice)
            {
                Console.WriteLine(AgencyName + "中介开始找房子");
                Room room = null;
                foreach (Room r in roomList)
                {
                    if (r.RoomType == type && r.Price <= roomPrice)
                    {
                        room = r;
                    }
                }
                if (room != null)
                {
                    Console.WriteLine("找到一套:类型:" + room.RoomType + "价格:" + roomPrice);
                }
                else
                {
                    Console.WriteLine("没有找到适合您的房子!");
                }
                Console.ReadLine();
            }
        }
    }
  • 相关阅读:
    【Python五篇慢慢弹(3)】函数修行知python
    【Python五篇慢慢弹】数据结构看python
    【项目管理】GitHub使用操作指南
    【Python五篇慢慢弹】快速上手学python
    【NLP】十分钟快览自然语言处理学习总结
    【NLP】条件随机场知识扩展延伸(五)
    【NLP】基于统计学习方法角度谈谈CRF(四)
    【NLP】基于机器学习角度谈谈CRF(三)
    【NLP】基于自然语言处理角度谈谈CRF(二)
    【NLP】前戏:一起走进条件随机场(一)
  • 原文地址:https://www.cnblogs.com/xyyt/p/3978739.html
Copyright © 2011-2022 走看看