【Design Patterns】-----工厂三姐妹之简单工厂

 

 

 

                工厂三姐妹之简单工厂

 

 

目录

简单工厂的实践... 

简单工厂定义... 

Java 版代码... 

     User:/*

     SQLserverUser:... 

     Test (Client )

     结果:... 

.Net 版代码... 

     实体:... 

      方法:... 

     客户端:... 

     显示结果:... 

小结:... 

 

 

 

 

简单工厂定义(Simple FactoryPattern):

    通过专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。

 

          

 

 

  

 

Java 版代码:

      



User

/*

 * entity level
 * */
 
public classUser {
 
       public int id;
       public int getId() {
              return id;
       }
       public void setId(int id) {
              this.id = id;
       }
       public String getName() {
              return name;
       }
       public void setName(String name) {
              this.name = name;
       }
       public String name;
}


SQLserverUser

 
/*
 * the method what we use
 * */
 
public classSqlserverUser {
 public voidInsert(User user)
 {
        System.out.println("Add a number Insert to User_table");
 }
 
 public voidGetUser(int id)
 {
        System.out.println("Get a number from User_table");
        return;
        //在java中返回空,只return就行,但是.net 中是 return null.
 }
}
 


Test (Client )

public classTest {
 
       public  static voidmain (String[] args)
       {
              Useruser =new User();
             
              SqlserverUsersu=new SqlserverUser();
             
              su.Insert(user);
             
              su.GetUser(1);
             
       }
}


结果:

       

 

 

.Net 版代码

        


实体:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
 
namespaceAbstract_Factory1._0
{
   classUser
   {
       privateintid;
 
       publicint  Id
       {
            get {returnid; }
            set {id=value;}
       }
       privatestring  name;
 
       publicstringName
       {
            get {returnname; }
            set {name=value;}
       }
 
 
   }
}
 


方法:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
 
namespaceAbstract_Factory1._0
{
   classSqlserverUser
   {
       publicvoidInsert(Useruser)
       {
            Console.WriteLine("在SQL Server 中给User表添加一条记录");
       }
 
       publicUserGetUser(intid)
       {
            Console.WriteLine("在SQL server 中根据ID得到User表一条记录");
            returnnull;
       }
   }
}
 


客户端:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
 
namespaceAbstract_Factory1._0
{
   classProgram
   {
       staticvoidMain(string[]args)
       {
            Useruser=newUser();
 
            SqlserverUsersu=newSqlserverUser();
 
            //插入用户
            su.Insert(user);
 
            //得到ID为1 的用户
            su.GetUser(1);
 
            Console.Read();
       }
   }
}
 


显示结果:

     

 

 

小结:

1,  工厂类负责创建的对象比较少

2,  客户只知道传人工厂类的参数,对于如何创建对象(逻辑)不关心;

3,  由于简单工厂很容易违反高内聚责任分配原则,因此一般只是在很简单的情况下使用。





评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值