摘要:本文主要向大家介绍了JAVA语言设计模式学习之装饰模式实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言设计模式学习之装饰模式实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
装饰模式把每个要装饰的功能放在单独的类中, 并让这个类包装他所要装饰的对象. 因此, 当需要执行特殊行为时, 客户代码可以在运行时根据需要有选择地按顺序地使用装饰功能包装对象了.
服饰装扮代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DecorateMode
{
class Program
{
static void Main(string[] args)
{
Person p = new Person("小明");
Sneakers sk = new Sneakers();
BigTrouser bt = new BigTrouser();
TShirts ts = new TShirts();
sk.Decorate(p);
sk.Show();
bt.Decorate(sk);
bt.Show();
ts.Decorate(bt);
ts.Show();
}
}
// person virtual
class Person
{
public Person()
{}
private string name;
public Person(string name)
{
this.name = name;
}
// 注意是virtual. 子类可以重写也可以不重写. Person可以实例化.
public virtual void Show()
{
Console.WriteLine(" 装扮的{0}", name);
}
}
// 服饰
class Finery : Person
{
protected Person component;
//
public void Decorate(Person component)
{
this.component = component;
}
public override void Show()
{
if(component !=null)
{
component.Show();
}
}
}
class TShirts : Finery
{
public override void Show()
{
Console.Write(" T-Shirt ");
base.Show();
}
}
class BigTrouser : Finery
{
public override void Show()
{
Console.Write(" big trousers ");
base.Show();
}
}
class Sneakers : Finery
{
public override void Show()
{
Console.Write(" Sneakers ");
base.Show();
}
}
class LeatherShoes : Finery
{
public override void Show()
{
Console.Write("LeatherShoes");
base.Show();
}
}
class Tie : Finery
{
public override void Show()
{
Console.Write("Tie");
base.Show();
}
}
class Suit : Finery
{
public override void Show()
{
Console.Write("Suit");
base.Show();
}
}
}
**装饰类对象Finery里面有一个父类Person对象component.
父类show是virtual. 可以实现多态.
所以. Finery的子类可以将其他Finery的子类包装在自己的component中.
这样循环嵌套, 就可以实现按照一定顺序添加功能的目的.**
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号