当前位置: 技术问答>java相关
《Java 与模式》c#的部分改写(I)
来源: 互联网 发布时间:2017-03-21
本文导语: 本来在看GOF的书,越看越觉得晦涩难懂,《Java与模式》给了我一本极好的入门教材(就是太贵,买书都心疼),我没有学过JAVA,不过觉得C#也就和JAVA差不多的,便试着改写一部分的示例代码,基本上我都调试过,不...
本来在看GOF的书,越看越觉得晦涩难懂,《Java与模式》给了我一本极好的入门教材(就是太贵,买书都心疼),我没有学过JAVA,不过觉得C#也就和JAVA差不多的,便试着改写一部分的示例代码,基本上我都调试过,不过因为初入门,也许有理解的不对的地方,希望大家多指教,谢谢!!
Simple Factory (简单工厂模式)
由一个工厂类根据传入的参数决定创建出哪一个类的实例。
参与者:
1,Creator (工厂类)
是工厂模式的核心。客户端调用该类创建产品,是一个具体的类。
2,Product (抽象产品)
抽象类或是接口,定义所有产品共有的方法和属性。
3,ConcreteProduct (具体产品)
示意性代码:
Creator
public class Creator
{
//静态工厂方法,定义成静态,后面调用不需实例化该类
public static Product factory(string which)
{
if(which==ConPro1)
{
return new ConcreteProduce1();
}
else if (which==ConPro2)
{
return new ConcreteProduce2();
}
}
}
Product
public interface Product
{
}
ConcreteProduct
public class ConcreteProduct1: Product
{
public ConcreteProduct(){}
}
public class ConcreteProduct2: Product
{
public ConcreteProduct(){}
}
客户端调用:
public class Client
{
creator.factory("ConPro1") ;
creator.factory("ConPro2");
}
Factory Method (工厂方法)
定义一个创建产品对象的工厂接口,将实际的创建工作推迟到子类中完成。在简单工厂模式中,如果有新产品,则必须修改工厂类的逻辑等,但好处在于无需大动客户端。工厂方法模式是对简单工厂模式的抽象和推广。
参与者:
*1,Creator (抽象工厂)
接口或是抽象类,是Factory Method模式的核心,与应用程序无关。
2,ConcreteCreater (具体工厂)
含有与应用密切相关的逻辑,并受到应用程序的调用以创建产品。
3,Product (抽象产品)
接口或是抽象类。
4,ConcreteProduct (具体产品)
示意性代码:
Creator
public interface Creator
{
//工厂方法
public Product factory();
}
Product
public interface Product
{
}
ConcreteCreator1
public class ConcreteCreator1 : Creator
{
//工厂方法
public Product factory()
{
return new ConcreteProduct1();
}
}
ConcreteCreator2
public class ConcreteCreator2 : Creator
{
//工厂方法
public Product factory()
{
return new ConcreteProduct2();
}
}
ConcreteProduct1
public class ConcreteProduct1 : Product
{
public ConcreteProduct1()
{ ... }
}
ConcreteProduct2
public class ConcreteProduct2 : Product
{
public ConcreteProduct2()
{ ... }
}
客户端调用
public class Client
{
private static Creator creator1,creator2;
private static Product product1,product2;
public static void Main()
{
creator1=new ConcreteCreator1();
product1=creator1.factory();
creator2=new ConcreteCreator2();
product2=creator2.factory();
}
}
Simple Factory (简单工厂模式)
由一个工厂类根据传入的参数决定创建出哪一个类的实例。
参与者:
1,Creator (工厂类)
是工厂模式的核心。客户端调用该类创建产品,是一个具体的类。
2,Product (抽象产品)
抽象类或是接口,定义所有产品共有的方法和属性。
3,ConcreteProduct (具体产品)
示意性代码:
Creator
public class Creator
{
//静态工厂方法,定义成静态,后面调用不需实例化该类
public static Product factory(string which)
{
if(which==ConPro1)
{
return new ConcreteProduce1();
}
else if (which==ConPro2)
{
return new ConcreteProduce2();
}
}
}
Product
public interface Product
{
}
ConcreteProduct
public class ConcreteProduct1: Product
{
public ConcreteProduct(){}
}
public class ConcreteProduct2: Product
{
public ConcreteProduct(){}
}
客户端调用:
public class Client
{
creator.factory("ConPro1") ;
creator.factory("ConPro2");
}
Factory Method (工厂方法)
定义一个创建产品对象的工厂接口,将实际的创建工作推迟到子类中完成。在简单工厂模式中,如果有新产品,则必须修改工厂类的逻辑等,但好处在于无需大动客户端。工厂方法模式是对简单工厂模式的抽象和推广。
参与者:
*1,Creator (抽象工厂)
接口或是抽象类,是Factory Method模式的核心,与应用程序无关。
2,ConcreteCreater (具体工厂)
含有与应用密切相关的逻辑,并受到应用程序的调用以创建产品。
3,Product (抽象产品)
接口或是抽象类。
4,ConcreteProduct (具体产品)
示意性代码:
Creator
public interface Creator
{
//工厂方法
public Product factory();
}
Product
public interface Product
{
}
ConcreteCreator1
public class ConcreteCreator1 : Creator
{
//工厂方法
public Product factory()
{
return new ConcreteProduct1();
}
}
ConcreteCreator2
public class ConcreteCreator2 : Creator
{
//工厂方法
public Product factory()
{
return new ConcreteProduct2();
}
}
ConcreteProduct1
public class ConcreteProduct1 : Product
{
public ConcreteProduct1()
{ ... }
}
ConcreteProduct2
public class ConcreteProduct2 : Product
{
public ConcreteProduct2()
{ ... }
}
客户端调用
public class Client
{
private static Creator creator1,creator2;
private static Product product1,product2;
public static void Main()
{
creator1=new ConcreteCreator1();
product1=creator1.factory();
creator2=new ConcreteCreator2();
product2=creator2.factory();
}
}
|
我考,C#和JAVA简直就一样啊
不过我觉得还是看看前11章吧,要不就被设计模式所左右了,看了,就可以左右设计模式了。不知对不对?
不过我觉得还是看看前11章吧,要不就被设计模式所左右了,看了,就可以左右设计模式了。不知对不对?
|
嗬嗬,有意思。。。