内容简介:定义抽象公司上方是模板方法下面是房地产公司
栗子
定义抽象公司
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设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据化运营速成手册
胡晨川 / 电子工业出版社 / 2017-4 / 55
《数据化运营速成手册》用于提升互联网公司员工的数据应用能力,即数据化运营能力。首先,从最常用的数据图表切入,帮助执行层正确地绘图,管理层正确地看图;接着,梳理运营中最基本的数据应用知识,涉及数据获取、数据清洗、数据认知、分析框架、指标体系、运营实验等内容。然后,介绍作者认为必要的统计学知识,包括假设检验、方差分析、回归分析和时间序列分解,并引入了管理科学中的规划求解方法。最后,介绍了数据分析工具的......一起来看看 《数据化运营速成手册》 这本书的介绍吧!