我在C#中设置此行:
WebOperationContext.Current.OutgoingResponse.Headers.Add(HttpResponseHeader.Expires, DateTime.Now.AddSeconds(10).ToString());
Run Code Online (Sandbox Code Playgroud)
现在我知道格式是关闭的,因为它预计如下:星期二,2011年12月6日20:24:15 GMT
是否有一个.NET实现的类IFormatProvider我可以在这里利用?或者我需要创建自己的?
我想根据它们实现的接口限制可以订阅特定事件的类型.
即我想要一个实现IPerson的对象"Employee"订阅一个事件处理程序,但另一个对象"Truck"实现了一个完全不同的接口来限制.开箱即用的任何实现正确方法模式的对象都可以订阅.
我该如何限制?
我问的原因是我正在实现Observer模式,但尝试使用C#Events.我有一个类似于MSDN的例子.
我关注的仍然是任何具有任何结构的对象(只要它包含正确的委托方法)可以在事件触发时执行.所以在上面的例子中,一个Employee可以实现对我的例子中的对象有意义的方法,但是然后任何人都可以在上面的例子中创建另一个类 - "truck",具有任何结构(只要它再次实现该方法)并且与主题事件联系起来...这绝对是对物体使用和良好设计的关注,也许我在这里非常挑剔,但这让我感到烦恼.
我正在整理这个设计模式的解释和代码示例,试图帮助我周围的人抓住它(同时帮助自己掌握模式).
我正在寻找的是对我的解释和代码示例的意见和批评......谢谢!
什么是工厂模式?工厂模式利用特定的专用"对象创建器对象"来处理 - 对象的创建 - 并且大部分时间 - 实例化,类似于现实世界的工厂.
现实世界的例子
想象一下汽车工厂是各种类型汽车的创造者.那个汽车厂的装配线之一可能有一天会生产一辆卡车,但是在另一天可能会重新生产汽车.假设经销商向其指定的帐户处理部门下达10辆汽车的订单.那个部门然后利用某个工厂并订购了10辆汽车.账户处理人员并不关心自己制造汽车(想象效果不佳)他们只使用最终产品,确保经销商获得他们的车辆.
明年同一辆车的新车型出现,订单开始流入.账户处理人员(仍然不关心汽车的生产)下订单,但现在他们收到的汽车是不同的,装配方法甚至是也许工厂可能会有所不同,但帐户处理人员不必担心这一点.另外一个想法:车辆的工厂装配商可能确切地知道如果某个帐户处理者下订单要采取什么行动(即,帐户处理者X下订单,工厂装配工知道对于帐户处理者X,他们生产10辆Y型车辆).另一个选择可能是帐户处理程序告诉装配工确切地生产什么类型的车辆.
如果账户处理者也处理了车辆的创建(即它们被耦合),则每当车辆以任何方式改变时,每个账户处理者都必须在生产该车辆时进行再培训.这会产生质量问题,因为有比工厂更多的帐户处理程序......会出现错误,费用会更高.
回到OOP
作为应用于软件工程的设计模式的对象工厂在概念上类似于上述示例...工厂生成各种类型的其他对象,您可以利用生成某种对象类型的装配线(对象汇编器),返回到某种方式.汇编程序可以检查请求客户端和句柄,或者客户端可以告诉汇编程序它需要什么对象.现在......你正在一个项目并创建一个对象工厂和各种汇编程序,稍后在项目中,需求稍有变化,现在要求您更改对象内容以及客户端如何处理该对象.由于您使用了工厂模式,这是一个简单的更改,在一个位置,您可以更改或添加工厂生成的对象,
执行此操作的不幸方法是没有工厂方法,实例化每个对象实例并在客户端本身格式化对象内容...假设您在20个客户端中使用了此特定对象.现在你必须去每个客户端,改变每个对象实例和格式......浪费时间......懒惰......第一次以正确的方式做到这一点,这样你就可以节省自己(和其他人)的时间并努力以后.
代码示例(C#)
以下是利用工厂进行食品和各种食品的示例
Factory module
public enum FoodType
{
//enumerated foodtype value, if client wants to specify type of object, coupling still occurs
Hamburger, Pizza, HotDog
}
/// <summary>
/// Object to be overridden (logical)
/// </summary>
public abstract class Food
{
public abstract double FoodPrice { get; }
}
/// <summary>
/// Factory object to be overridden (logical)
/// </summary>
public abstract class FoodFactory …Run Code Online (Sandbox Code Playgroud) 如何以编程方式在iOS中切换视图控制器?
因此,例如 - 我有一个菜单设置MVC,现在我点击"帮助"如何编程手这一关,以帮助视图控制器加载MVC的设置?
好的 - 直接和简单的问题(2部分) - 寻找一个简单的答案.
在WCF服务合同中,您可以在合同上提供命名空间......
问题是这样的:第一个 - 为什么(对于真正...需要可靠的细节)是为合同命名空间命名约定选择的http://模型
第二 - 一旦设定,我该如何利用...像这样?这是在我的主人 -
<endpoint ... contract="http://helloworld.com/example"></endpoint>
Run Code Online (Sandbox Code Playgroud) Microsoft在哪些方面利用了适配器模式?我正在寻找使用适配器的.NET组件的具体示例.
适配器类和目标类都实现了相同的接口...为什么我不能将它们视为同一个对象?
interface ISmartPhone
{
string Name { get; set; }
string Type { get; set; }
void ShowTextWithImage();
}
public class BasicFlipPhoneAdapter : ISmartPhone
{
IBasicPhone basicPhone;
public BasicFlipPhoneAdapter(IBasicPhone basicPhone)
{
this.basicPhone = basicPhone;
}
public string Name { get; set; }
public string Type { get; set; }
public void ShowTextWithImage()
{
basicPhone.ShowBasicText();
}
}
public class iPhone : ISmartPhone
{
public string Name { get; set; }
public string Type { get; set; }
public void ShowTextWithImage()
{ …Run Code Online (Sandbox Code Playgroud)