内容简介:定义抽象公司上方是模板方法下面是房地产公司
栗子
定义抽象公司
public abstract class Corp{
// 公司生产内容
protected abstract void produce();
// 销售
protected abstract void sell();
// 赚钱
public void makeMoney(){
// 生产
this.produce();
// 销售
this.sell();
}
}
上方是模板方法
下面是房地产公司
public class HouseCorp extends Corp{
// 盖房子
protected void produce(){
// 盖房子
}
// 卖房子
protected void sell(){
// 卖房子
}
// 赚钱
public void makeMoney(){
super.makeMoney();
// 赚钱
}
}
服装公司
public class ClothesCorp extends Corp{
// 生产衣服
protected void produce(){
// 生产衣服
}
protected void sell(){
// 出售衣服
}
public void makeMoney(){
super.makeMoney();
// 赚钱
}
}
最后编写场景
public class Client{
public static void main(String[] args){
HouseCorp houseCorp = new HouseCorp();
houseCorp.makeMoney();
ClothesCorp clothesCorp = new ClothesCorp();
clothesCorp.makeMoney();
}
}
更改
企业改头换面,生产另外的产品
山寨公司
public class IPodCorp extends Corp{
// 生产
protected void produce(){
// 生产
}
// 畅销
protected void sell(){
// 畅销
}
// 赚钱
public void makeMoney(){
super.makeMoney();
// 赚钱
}
}
赚钱
public class Client{
public static void main(String[] args){
// 房地产
HouseCorp houseCorp = new HouseCorp();
// 挣钱
houseCorp.makeMoney();
// 山寨公司
IPodCorp ipodCorp = new IPodCorp();
ipodCorp.makeMoney();
}
}
继续更改
公司和产品分离,让其之间建立关系
// 抽象产品类
public abstract class Product{
// 生产
public abstract void beProducted();
// 销售
public abstract void beSelled();
}
// 房子
public class House extends Product{
// 豆腐渣房子
public void beProducted(){
// 生产
}
// 销售
public void beSelled(){
// 销售
}
}
继续
public class IPod extends Product{
public void beProducted(){
// 生产
}
public void beSelled(){
// 销售
}
}
下面是抽象公司类
public abstract class Corp{
// 定义抽象产品对象
private Product product;
// 构造函数
public Corp(Product product){
this.product = product;
}
// 公司赚钱
public void makeMoney(){
// 生产
this.product.beProducted();
// 销售
this.product.beSelled();
}
}
定义房地产公司
public class HouseCorp extends Corp{
// 定义House产品
public HouseCorp(House house){
super(house);
}
// 赚钱
public void makeMoney(){
super.makeMoney();
// 赚钱
}
}
山寨公司
public class ShanZhaiCorp extends Corp{
// 产品
public ShanZhaiCorp(Product product){
super(product);
}
// 赚钱
public void makeMoney(){
super.makeMoney();
// 赚钱
}
}
最后书写场景
public class Client{
public static void main(String[] args){
House house = new House();
// 房地产公司
HouseCorp houseCorp = new HouseCorp(house);
// 赚钱
houseCorp.makeMoney();
// 生产产品
ShanZhaiCorp shanZhaiCorp = new ShanZhaiCorp(new IPod());
ShanZhaiCorp.makeMoney();
}
}
此时在目前状态下,若要生产服装,只需要继承Product类,定义一个服装类即可
public class Clothes extends Product{
public void beProducted(){
// 生产服装
}
public void beSelled(){
// 卖衣服
}
}
最后书写场景类
public class Client{
public static void main(String[] args){
House house = new House();
// 房地产公司
HouseCorp houseCorp = new HouseCorp(house);
// 挣钱
houseCorp.makeMoney();
// 山寨公司生产
ShanZhaiCorp.shanZhaiCorp = new ShanZhaiCorp(new Clothes());
ShanZhai.makeMoney();
}
}
总结
桥梁模式,抽象和实现解耦,需要的时候,将实现注入抽象。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 设计模式——订阅模式(观察者模式)
- 设计模式-简单工厂、工厂方法模式、抽象工厂模式
- java23种设计模式-门面模式(外观模式)
- 设计模式-享元设计模式
- Java 设计模式之工厂方法模式与抽象工厂模式
- JAVA设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web2.0策划指南
艾美 / 2009-11 / 32.00元
《Web2.0策划指南(影印版)》是讲述战略的。书中的示例关注的是Web 20的效率,而不聚焦于技术。你将了解到这样一个事实:创建Web 20业务或将Web 20战略整合到业务中,意味着创建一个吸引人们前来访问的在线站点,让人们愿意到这里来共享他们的思想、见闻和行动。当人们通过Web走到一起时,可能得到总体远远大于各部分和的结果。随着传统的“口碑传诵”助推站点高速成长,客户本身就能够帮助建立站点。......一起来看看 《Web2.0策划指南》 这本书的介绍吧!