代理模式
① 代理的模式有几种
一、代理商模式按数量分可分为三类:
1.独家代理,
2.少头博弈代理(2-3家),
3.多头回博弈代理(3家以上)答。
选择独家代理或是非独家代理,是中国企业首先要思考的。
二、按销售商对代理商的渗透程度可分为两类:
渗透类代理,独立代理(非独家代理)。
三、按代理商的级数可分为:单级代理商体制,多级代理商体制。
② 代理模式的简介
即Proxy Pattern,23种常用的面向对象软件的设计模式之一。(设计模式的说法源自《设计模式》一书,原名《Design Patterns: Elements of Reusable Object-Oriented Software》。1995年出版,出版社:Addison Wesly Longman.Inc。该书提出了23种基本设计模式,第一次将设计模式提升到理论高度,并将之规范化。)
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
③ 代理模式和中介者模式有什么不同
代理模式提供代理被访问对象的对外接口,属于1V多;
中介者模式是提供统一互交信息的接口,属于多对多;
回答的简要,不喜勿喷,谢谢!
④ 代理销售模式
好处:
1、不用投资产品在生产环节上的各项费用;
2、容易与其他代理商一起形成规模效应,使生产厂家降低经营成本,直接体现在降低产品价格上;
3、享受到厂家的各种资源,如品牌,培训,制度,设备等;
4、市场风险减低,最直接就是降低产品存量风险;
5、退出容易。
缺点:
1、厂家有品牌的知识产权,最终体现在对下游的控制主动性;
2、信息不对称,厂家的经营信息和经营规划代理商完全不知道,但代理商的经营信息厂家完全掌握。这样厂家可以随时根据代理商的经营信息调整经营策略,规避风险或者转嫁风险;
3、代理商既得利益不能保障,虽然国家规定产品质量问题由厂家承担,但如果厂家失去承担责任的能力或者逃避承担责任,那么作为流通环节最上游的代理商就可能会承担法律和经济责任。
4、资金风险,这个与信息不对称有一定关联,不过即使知道厂家经营信息,但代理商在合作期间要为厂家垫付一定的在途资金,这些资金的风险完全由代理商承担。
好了,我的水平大概就只提供到这些了,老板你就琢磨一下吧。
⑤ 什么是代理模式
代理产品呗
⑥ 适配器模式和代理模式的区别
1.简介
适配器模式:适配器模式(英语:adapter pattern)有时候也称包装样式或者包装。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类别自己的接口包裹在一个已存在的类中。wiki
代理模式:代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。wiki
2.困惑
设计模式总是通过增加层来进行解耦合,提高扩展性,但是如果我们没法从在这个抽象维度中看出,这个层真正的抽象含义,那么我们很难搞懂一个模式真正的内涵?我就有这个疑问,这两个东东都是增加了一层,但是这一层有什么区别?
3.理解
很明显,适配器模式是因为新旧接口不一致导致出现了客户端无法得到满足的问题,但是,由于旧的接口是不能被完全重构掉的,因为我们还想使用实现了这个接口的一些服务。那么为了使用以前实现旧接口的服务,我们就应该把新的接口转换成旧接口;实现这个转换的类就是抽象意义的转换器;
就比如在java中早期的枚举接口是Enumeration而后定义的枚举接口是Iterator;有很多旧的类实现了enumeration接口 暴露出了一些服务,但是这些服务我们现在想通过传入Iterator接口而不是Enumeration接口来调用,这时就需要一个适配器,那么client就能用这个服务了(服务端只想用Iterator或者只知道这个接口);
相比于适配器的应用场景,代理就不一样了,虽然代理也同样是增加了一层,但是,代理提供的接口和原本的接口是一样的,代理模式的作用是不把实现直接暴露给client,而是通过代理这个层,代理能够做一些处理;
感悟:设计模式学习应该结合场景,脱离了场景就很难明白这些东西,这些层这么写都是在干什么;其实不管是面向对象还是设计模式,最重要的是抽象,理解了它在抽象一个什么场景你才能理解本质;
⑦ 代理模式的实现方式
下面我举个例子来说明这一切:
场景:业务类CompanyManager在调用Save方法的时候需要调用SecurityManager类判断权限是否足够
第一种实现方式,我们通常会这样做:直接在CompanyManager类中调用ISecurityManager接口的IsPass方法判断权限。
public class SimpleCompanyManager : ICompanyManager
{
可通过外部注入的属性#region 可通过外部注入的属性
public string UserName { get; set; }
public CompanyDao Dao { get; set; }
#endregion
public void Save()
{
//判断权限
ISecurityManager security = new SecurityManager();
if (security.IsPass(UserName))
{
//执行业务方法
//.
//调用DAO层方法
Dao.Save();
}
else
{
//执行其它业务方法
Console.WriteLine("您没有该权限");
}
}
}
这样CompanyManager类与ISecurityManager或SecurityManager会发生业务性耦合。聪明的朋友会发现在GOF(设计模式)中有一种模式(代理模式)可以解除这种耦合。
代理模式(Proxy Pattern):什么是代理模式?是给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须有系统的其他角色代为创建并传入
CompanyManager
public class CompanyManager : ICompanyManager
{
可通过外部注入的属性#region 可通过外部注入的属性
public string UserName { get; set; }
public CompanyDao Dao { get; set; }
#endregion
public void Save()
{
//执行业务方法
//.
//调用DAO层方法
Dao.Save();
}
}
CompanyProxyManager
public class CompanyProxyManager : ICompanyManager
{
public string UserName { get; set; }
private ICompanyManager target = new CompanyManager();
public void Save()
{
//判断权限
ISecurityManager security = new SecurityManager();
if (security.IsPass(UserName))
{
//调用目标对象Save方法
target.Save();
}
else
{
Console.WriteLine("您没有该权限");
}
}
}
这样,CompanyManager类就不必与判断权限的类SecurityManager耦合
代理模式作用就是接触业务耦合,保证业务的独立性
摘自 刘冬的博客园
⑧ 本人做了一项产品,以代理模式销售,分为5个等级的代理,分别为全国
所谓业绩指的什么呢?拉多少人?这不就是传销嘛……
⑨ 装饰器模式 和 代理模式的不同
装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;
代理模式:给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用;
装饰模式应该为所装饰的对象增强功能;代理模式对代理的对象施加控制,并不提供对象本身的增强功能
二者的实现机制确实是一样的,可以看到他们的实例代码重复是很多的。但就语义上说,这两者的功能是相反的,模式的一个重要作用是简化其他程序员对你程序的理解,
你在一个地方写装饰,大家就知道这是在增加功能,你写代理,大家就知道是在限制,
虽然代码很可能相同,但如果你都叫他们装饰,别人会很迷惑的。