关闭

黑马程序员——一个面对对象的小实例

标签: java语言androideclipse黑马程序员
336人阅读 评论(0) 收藏 举报
分类:

这两天看张孝祥张老师的视频上面说到这样一个面对对象的小例子:

两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子

张老师是用工具类的方式来实现的这句话的,但是我感觉用内部类来也可以来实现这句话,以下是我的实现过程:

 

针对于这几话,我们可以这样来理解:

椅子是由木材而来,木材是由树而来,则椅子是木材的内部类,木材是树的内部类,木材可以做成椅子,则木材中封装了一个方法可以返回椅子的实例对象。那么树这个类的内部大概是这样的:

Class {

       Class 木材{

              做方法(木材)

              {

                     return new 椅子(); 

}

Class  椅子

{

}

}

}

 

然后石刀是由石头而来,则石刀是石头的内部类,石头可以磨成石刀,则石头内部封装了一个方法可以返回 石刀的实例对象。

 

然后我们在所石刀,木材是由石刀砍树而来的,则石刀内部封装了一个砍方法,其参数为树,其返回值类型为木材。

那么石头这个类的内部也明晰了为:

Class 石头{

       磨方法(石头a,石头b{

              return  new 石刀()

}

       Class 石刀

{

       砍方法(树 tree{

              return  tree.new 木材()

}

}

}

一个石头只能磨成一把石刀,一颗树也只能作成一个木材,一个木材只能做成一把椅子所以这这些实例对象要用单例设计模式来实现;

其代码实现如下:

 

 

将石刀、木材、椅子定义为接口,以便我们用来接收内部类实例对象

//石刀接口

public interface StoneKnife {

       public Mateial knif(Tree t);  //内部封装一个砍方法

}

// 木材接口

public interface Mateial{

       public Chair make(Mateial t); // 内部封装一个做方法

}

 

//椅子接口

public interface Chair{

}

 

//石头类

public class Stone {

 

//内部封装一个磨方法返回值为石刀的实例对象

       public  StoneKnife mear(Stone a,Stone b){

              return  Stone_Knife.getValue();

       }

      

       //一个实现石刀接口的内部类,

       public static class Stone_Knife implements StoneKnife{

              //单例设计模式实现 石刀的实例对象

              private Stone_Knife(){}

              private static  final Stone_Knife stoneKnife=new Stone_Knife();

              public static Stone_Knife getValue(){

                     return stoneKnife;

              }

              //砍方法,接收一个树对象返回一个 木材对象

              public Mateial knif(Tree tree){

                     return  Tree.Mateial_.getValue();

              }

       }

 

}

 

//树类

public class Tree {

       //一个实现木材接口的内部类

       public static class Mateial_ implements Mateial{

              //单例设计模式实现 木材的实例对象

              private Mateial_(){}

              private static final Mateial_ m=new Mateial_();

              public static Mateial_ getValue(){

                     return m;

              }

              //实现木材接口的做方法

              public Chair make (Mateial t){

                     return  Chair_.getValue();

              }

              //一个实现椅子接口的内部类的内部类

              public static class Chair_ implements Chair{

                     //单例设计模式实现椅子对象

                     private Chair_(){}

                     private static final Chair_ ch=new Chair_();

                     public static Chair_ getValue(){

                            return ch;

                     }

                    

              }

 

       }

}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4855次
    • 积分:162
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档