设为首页 加入收藏

TOP

设计模式模式(四):建造者模式(生成器模式)(一)
2019-09-26 11:11:56 】 浏览:109
Tags:设计模式 模式 建造 成器

建造者模式主要解决问题:

  具备若干成员,当其中一个成员发生变化,其它成员也随着发生变化。

  这种复杂对象的生成需要使用建造者模式来生成。

建造者设计模式的结构图:

  来源:http://c.biancheng.net/view/1354.html

 

 

 例子:

  街头篮球角色创建模拟

街头篮球: 中锋、前锋、后卫

最重要的属性:身高(会影响其他属性)

中锋:身高加1 速度减1 盖帽加2

前锋:身高加2 速度减1 盖帽加1

后卫:身高加3 速度减1 盖帽加1

 

代码如下:

  代码结构图;

      

  具体代码;

 

父类;AbstractPlayer: 

 1 package org.yys.建造者设计模式.interfaces.impl;
 2 
 3 public class AbstractPlayer {
 4         /**
 5          * 身高: height
 6          * 速度: speedvalue
 7          * 盖帽: blockvalue
 8          */
 9     
10         protected int height;
11         protected int speedvalue;
12         protected int blockvalue;
13         public int getHeight() {
14             return height;
15         }
16         public void setHeight(int height) {
17             this.height = height;
18         }
19         public int getSpeedvalue() {
20             return speedvalue;
21         }
22         public void setSpeedvalue(int speedvalue) {
23             this.speedvalue = speedvalue;
24         }
25         public int getBlockvalue() {
26             return blockvalue;
27         }
28         public void setBlockvalue(int blockvalue) {
29             this.blockvalue = blockvalue;
30         }
31         @Override
32         public String toString() {
33             return "Player [height=" + height + ", speedvalue=" + speedvalue + ", blockvalue=" + blockvalue + "]";
34         }
35          
36                 
37 
38 }

 CPlayer:前锋entity:

 

 1 package org.yys.建造者设计模式.entity;
 2 
 3 import org.yys.建造者设计模式.interfaces.impl.AbstractPlayer;
 4 public class CPlayer  extends  AbstractPlayer{
 5 
 6     public CPlayer() {
 7         super();
 8         this.height=190;
 9         this.speedvalue=25; 
10         this.blockvalue=75 ;
11     }
12 
13     @Override
14     public String toString() {
15         return "CPlayer [toString()=" + super.toString() + "]";
16     }
17     
18     
19

FPlayer:中锋entity:

 1 package org.yys.建造者设计模式.entity;
 2 import org.yys.建造者设计模式.interfaces.impl.AbstractPlayer;
 3 
 4 public class FPlayer   extends   AbstractPlayer{
 5 
 6     @Override
 7     public String toString() {
 8         return "FPlayer [toString()=" + super.toString() + "]";
 9     }
10 
11     public FPlayer() {
12         super();
13         this.height=180 ; 
14         this.blockvalue=50 ; 
15         this.speedvalue=50 ; 
16     }
17  }

GPlayer:后卫entity:

 1 package org.yys.建造者设计模式.entity;
 2 
 3 import org.yys.建造者设计模式.interfaces.impl.AbstractPlayer;
 4 
 5 public class GPlayer  extends  AbstractPlayer {
 6 
 7     public GPlayer() {
 8         super();
 9         this.height =   170 ;  
10         this.blockvalue = 30 ; 
11         this.speedvalue =75  ;  
12     }
13 
14     @Override
15     public String toString() {
16         return "GPlayer [toString()=" + super.toString() + "]";
17     }
18     
19     
20 
21 }

Builder接口(改变数值的具体方法接口)

 1 package org.yys.建造者设计模式.interfaces;
 2 
 3 import org.yys.建造者设计模式.interfaces.impl.AbstractPlayer;
 4 
 5 public interface Builder {
 6 
 7     void  changeHeight(int  count);
 8     void  changeBlockValue(int  count);
 9     void  changeSpeedValue(int  count);
10     
11     AbstractPlayer    getPlayer();
12 }

CPlayerBuilderImpl:

 1 package org.yys.建造者设计模式.interfaces.impl;
 2 
 3 import org.yys.建造者设计模式.entity.CPlayer;
 4 import org.yys.建造者设计模式.interfaces.Builder;
 5 
 6 public class CPlayerBuilderImpl  implements  Builder {
 7     
 8     private   CPlayer    player =  new CPlayer();
 9     @Override
10     public void changeHeight(int count) {
11         
12         this.player.height  +=count ;
13     }
14 
15     @Override
16     public void changeBlockValue(int count) {
17         // TODO Auto-generated method stub
18         this.player.blockv
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇07.Django学习之model进阶 下一篇设计模式 - 七大设计原则(三)- ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目